找回密码
 欢迎注册
楼主: forcal

[擂台] 寻找最高效的矢量化算法

[复制链接]
 楼主| 发表于 2010-10-25 21:03:16 | 显示全部楼层
要不大家练练手?

两个例子:

1、在1#的例子:
  1. //用C++代码描述为:
  2. s=0.0;  
  3. for(x=0.0;x<=1.0;x=x+0.0011)  
  4. {
  5.   for(y=1.0;y<=2.0;y=y+0.0009)
  6.   {
  7.   s=s+cos(1-sin(1.2*x^(y/2)+cos(1-sin(1.2*y^(x/2)))));
  8.   }
  9. }  
复制代码
2、矩阵乘
matlab代码:
  1. tic
  2. a = rand(1000,1000);
  3. b = rand(1000,1000);
  4. k = a*b;
  5. k(1:3,5:9)
  6. toc
复制代码
Forcal代码:
  1. !using["math","sys"];
  2. (:a,b,k,t0)=
  3. t0=clock(),
  4. oo{
  5.   a=rand[1000,1000], b=rand[1000,1000],
  6.   k=a*b,  //矩阵乘
  7.   k[1,3:5,9].outm()
  8. },
  9. [clock()-t0]/1000;
复制代码
无论用什么方法,只要速度快就行。例子1要超过C/C++的速度,例子2超过matlab的速度似乎较难,先超过Forcal的速度即可(这也是C/C++的速度)。
如果各位不愿给出源代码,生成exe文件比较一下即可(只要知道大家可以得到更高的速度就心满意足了,呵呵)。
Forcal程序可下载OpenFC(绿色免安装,2M)演示:http://www.forcal.net/xiazai/forcal9/openfc32w.rar
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-26 20:05 , Processed in 0.038289 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表