如下,一組4元向量的排序,如何把排序時間縮減一半?可以用並行演算法。
using
system;
using
system.collections.generic;
using
system.diagnostics;
namespace
vector4test
internal
class
vectorcomparer : icomparer
<
vector
>
}internal
class
vectorcomparer2 : icomparer
<
vector
>
}internal
class
program
private
static
vector getvectors()
return
vectors;
}private
static
void
a(vector vectors)
private
static
void
b(vector vectors)
array.sort(vectors,
newvectorcomparer2());
}private
static
void
c(vector vectors)
array.sort(vectors,
newvectorcomparer2());}}
} 我暈,剛開始我用的演算法a,後來又寫了個演算法b,我還沒用並行演算法呢,一看b方法比a方法時間縮短了差不多兩個數量級,如下
a sort time: 00:00:00.5346475
b sort time: 00:00:00.0169736
太奇怪了也,難道我的
b演算法二級快取命中率比較高?誰能再把我的
b方法消耗時間再降低一半,可以用任何語言,
vector
類等也可以用自己的資料型別,比如結構啦,四維陣列啥的,隨意,只要是四元的向量,每個分量是隨機生成的,然後每個向量的長度是根號下每個分量的平方和,滿足這個條件就行。
modify by wawa at 2009-04-22 06:42
應大家回帖要求,
1、把隨機數種子初始的語句放到了迴圈外面
2、每次執行排序重新獲取新的亂序vector
3、把b方法直接對計算出來的double排序換成了對對vector的排序,因為之前的**實際上沒有對vector排序
4、把vector類增加了值t,用來儲存該vector的長度。
我這裡結果如下
a sort time: 00:00:00.6661531
b sort time: 00:00:00.0423115
c sort time: 00:00:00.0302426
如何提公升程式設計師的「效能」
程式設計師經常痴迷於優化程式的效能,我們始終會圍繞一些讓人絞盡腦汁的優化建議,比如 如何簡化 如何提公升軟體執行速度 如何提高軟體穩定性等等。本文來討論一下程式設計師優化自身 效能 的一些建議。1 提高文件編寫能力 缺乏文件,對軟體開發是致命的,一方面是軟體無追溯能力,無法找到軟體開發的起源,思想 ...
談一談迴圈的效能提公升
迴圈在任何程式語言中都會大量的使用,在js中也不例外。對於js來說,迴圈也有其特殊之處,這邊筆記主要寫的是js中效能提公升。首先要來和大家統一一下概念,下面是for迴圈的基本概念 for迴圈按照如下順序執行 所以大家可以看到 迴圈初始化語句只執行一次,而其他三步每次迴圈都執行。接下來可以從四方面入手...
用一下泛型快取 提公升程式效能
最近看到一些文章,都說程式不能光完成功能,還是要精益求精的 先來一把利刃 泛型快取 找度娘看了看,覺得有乙個概括的不錯,如下 泛型快取是jit產生全新的類,記憶體直接分配,由cpu查詢記憶體位址 我的理解,泛型快取是利用泛型和靜態變數特徵,在執行時根據不同的型別生成不同的類,由於資料是靜態的,每個類...