Re: dmd 2.058 のリリース

投稿ツリー


このトピックの投稿一覧へ

なし Re: dmd 2.058 のリリース

msg# 1.2
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/2/24 6:12
ゲスト 
次のようなコードです。(大変汚くて申し訳ございません^q^;)
2.057と2.058で特に最適化をかけたときに顕著に差が見られます。

#code(d){{{
import std.stdio, std.datetime, std.math, std.random, std.parallelism, core.thread;

immutable int benchTime = 10;

void main(){
uint floatScore = 0;
FloatBench[] f_thread = new FloatBench[totalCPUs];
foreach(ref elem; f_thread){
elem = new FloatBench;
}

foreach(ref elem; f_thread){
elem.start();
}

foreach(ref elem; f_thread){
elem.join();
floatScore += elem.localCount;
}

writeln("score : ", floatScore);
}



class FloatBench : Thread{

this(){
super(&run);
}

uint localCount = 0;

private:
void run(){

immutable uint arr = 0x100;
auto rnd = Xorshift(unpredictableSeed);
StopWatch sw;
double[arr] a , b, c = 0;

for(uint i = 0; i < arr; i++){
a[i] = uniform(sqrt(double.max)*(-1) + 1.0, sqrt(double.max), rnd);
b[i] = uniform(sqrt(double.max)*(-1), sqrt(double.max) - 1.0, rnd);
}

sw.start();
while(sw.peek().seconds < benchTime){
for(int i = 0x3FFF; i >= 0; i--){
c[] += a[] * b[];
a[] += uniform(-0.5, 0.5, rnd);
c[] -= a[] * b[];
b[] -= uniform(-0.5, 0.5, rnd);
}
localCount++;
}
}
}
}}}
投票数:37 平均点:2.97
返信する

この投稿に返信する

題名
ゲスト名
投稿本文

  条件検索へ


メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu