编程语言EF速度测试(1):spectral-norm
这是一个专门的编程语言/编译器速度测试/对比网站(http://shootout.alioth.debian.org/)给出的题目,以下是EF源代码:
import 工具;//spectral-normpublic class 启动类 <作者 = "liigo">{private static double eval_A(int i, int j) { return 1.0/((i+j)*(i+j+1)/2+i+1); }private static eval_A_times_u(int N, double[] u, double[] Au){int i,j;for(i=0;i<N;i++){Au=0;for(j=0;j<N;j++) Au+=eval_A(i,j)*u;}}private static eval_At_times_u(int N, double[] u, double[] Au){int i,j;for(i=0;i<N;i++){Au=0;for(j=0;j<N;j++) Au+=eval_A(j,i)*u;}}private static eval_AtA_times_u(int N, double[] u, double[] AtAu){ double[] v = new double; eval_A_times_u(N,u,v); eval_At_times_u(N,v,AtAu); }public staticmain(string[] args){int time = 运行环境.取启动时间();int i;int N = 5500;double[] u = new double, v = new double;double vBv, vv;for(i=0;i<N;i++) u=1;for(i=0;i<10;i++){eval_AtA_times_u(N,u,v);eval_AtA_times_u(N,v,u);}vBv=0; vv=0;for(i=0;i<N;i++) { vBv+=u*v; vv+=v*v; }控制台.输出行(工具.数学运算.求平方根(vBv/vv));控制台.输出行("time(ms): ", 运行环境.取启动时间() - time);控制台.输入文本();}}这个EF程序,在我的机器上,运行耗时约 90 秒。相应的VC6最佳优化后运行耗时约 21 秒。
其它编程语言/编译器的表现,请看这里:http://shootout.alioth.debian.org/gp4/benchmark.php?test=spectralnorm&lang=all
总的来说,EF表现不坏。比不少编程语言(如C++, JAVA, C#, D, Fortran, Pascal)慢很多,又比另外不少编程语言(如Erlang, Python, Ruby, Perl, PHP, Lua, Groovy, SmallTalk, JavaScript)快很多。
进一步分析的话:EF作为编译型语言,通常比其它编译型语言都慢(毕竟EF编译器尚未优化),但最多慢3到5倍;EF通常比解释型语言都要快,往往快数倍、数十倍,以至上百倍。(Lua的表现有点出乎我的意外。)
还有很多测试题目,有时间再继续。想了解EF语言,请到EF官方博客:http://blog.csdn.net/efdev/
页:
[1]