[研究] 程序执行速度(页 1) - Php - ChinaUnix.net - powe...
来源:百度文库 编辑:神马文学网 时间:2024/03/29 18:04:53
为了测试各种编程语言程序的执行效率,小弟编写了一个排序程序sort_array.c,
这个程序最先用C语言编写,以C语言版本为基础改写成java,php,perl等语言版本.
另外还编写了一个runtest.php的程序,这个程序用于测试各种语言版本的排序程序
的执行时间及计算比较他们的执行效率。由于小弟的机器只有windows所以只能在
windows下做测试。请大家试试,看看结果怎样。
以下是在本人机器上的测试结果:
C:\work\test_speed>;php runtest.php
==================================================
<各种语言程序的执行速度测试比较,测试项目:排序算法>;
测试环境:Windows 2000 Professional
gcc version 3.4.2 (mingw-special)
java version 1.4.2
PHP 5.0.4 (cli) (built: Mar 31 2005 02:45:48)
perl, v5.8.7 built for MSWin32-x86-multi-thread
==================================================
开始执行c程序...
重复执行4000000次排序操作
排序前: 19,41,25,15,121,8,432,2,3,9
排序后: 2,3,8,9,15,19,25,41,121,432
c程序执行完毕,花费时间1.9295秒
--------------------------------------------------
开始执行java程序...
重复执行4000000次排序操作
排序前: 19,41,25,15,121,8,432,2,3,9
排序后: 2,3,8,9,15,19,25,41,121,432
java程序执行完毕,花费时间2.96秒
--------------------------------------------------
开始执行perl程序...
重复执行20000次排序操作
排序前: 19,41,25,15,121,8,432,2,3,9
排序后: 2,3,8,9,15,19,25,41,121,432
perl程序执行完毕,花费时间2.0541秒
--------------------------------------------------
开始执行php程序...
重复执行20000次排序操作
排序前: 19,41,25,15,121,8,432,2,3,9
排序后: 2,3,8,9,15,19,25,41,121,432
php程序执行完毕,花费时间2.9211秒
--------------------------------------------------
各种语言程序运行速度比较:
c : java : perl : php = 302.78 : 197.37 : 1.42 : 1
C:\work\test_speed>;
测试结果显示:C语言运行速度最快,Java程序比C慢1/3.
perl和php就比较糟糕,C速度是php的300倍.
created by jasonli 2005-10-17
源代码列表:(文件名为sort_array.*)
sort_array.c
-----------------------------------
#include
void sort(int *p,int n)
{
int i,j,k,l;
for (i=0;i
k=i;
for (j=i+1;j
if(p[j] < p[k]) k=j;
}
if(i!=k)
{
l=p[k];
p[k]=p[i];
p[i]=l;
}
}
}
main(int argc,char **argv)
{
int i,j;
int n=10;
int a[]={19,41,25,15,121,8,432,2,3,9};
int b[10];
int count=1000000;
if(argc<2) { printf("请指定排序执行次数!\n命令格式:\n%s 次数",argv[0]); exit(1); }
count = atoi(argv[1]);
for(j=0;j
printf("排序前: ");
for(i=0;i
if(i>;0) printf(",%d",a[i]);
else printf("%d",a[i]);
}
for(i=0;i
for(j=0;j
}
printf("\n排序后: ");
for(i=0;i
if(i>;0) printf(",%d",a[i]);
else printf("%d",a[i]);
}
printf("\n");
exit(0);
}
sort_array.java
-----------------------------------
import java.lang.*;
public class sort_array
{
public static void sort(int[] p,int n)
{
int i,j,k,l;
for (i=0;i
k=i;
for (j=i+1;j
if(p[j] < p[k]) k=j;
}
if(i!=k)
{
l=p[k];
p[k]=p[i];
p[i]=l;
}
}
}
public static void main(String[] args)
{
int i,j;
int n=10;
int[] a={19,41,25,15,121,8,432,2,3,9};
int[] b=new int[n];
int count=1000000;
int argc;
argc = args.length;
if(argc<1) { System.out.print("请提供参数指定排序执行次数!"+count+"\n"); return ; }
count = Integer.parseInt(args[0]);
System.out.print("重复执行"+count+"次排序操作\n");
System.out.print("排序前: ");
for(i=0;i
if(i>;0) System.out.print(","+a[i]);
else System.out.print(a[i]);
}
for(i=0;i
for(j=0;j
}
System.out.print("\n排序后: ");
for(i=0;i
if(i>;0) System.out.print(","+a[i]);
else System.out.print(a[i]);
}
System.out.print("\n");
}
}
sort_array.pl
-----------------------------------
sub c_sort
{
#int $i,$j,$k,$l;
local($i,$j,$k,$l);
for ($i=0;$i<$n-1;$i++)
{
$k=$i;
for ($j=$i+1;$j<$n;$j++)
{
if(@a[$j] < @a[$k]) { $k=$j ; }
}
if($i!=$k)
{
$l=@a[$k];
@a[$k]=@a[$i];
@a[$i]=$l;
}
}
}
sub main
{
local($i,$j);
local($n);
local($argc);
local(@argv);
$argc = $_[0];
@argv = $_[1];
@a=(19,41,25,15,121,8,432,2,3,9);
@b=@a;
$n=@a;
if($argc<1) { printf("请指定排序执行次数!\n命令格式:cmd>;%s 次数",$0); exit(1); }
$count = @argv[0];
printf("重复执行%d次排序操作\n",$count);
printf("排序前: ");
for($i=0;$i<$n;$i++)
{
if($i>;0) { printf(",%d",@a[$i]); }
else { printf("%d",@a[$i]); }
}
for($i=0;$i<$count;$i++)
{
@a=@b;
c_sort(); # c_sort(@a,$n);
}
printf("\n排序后: ");
for($i=0;$i<$n;$i++)
{
if($i>;0) {printf(",%d",@a[$i]);}
else {printf("%d",@a[$i]);}
}
printf("\n");
exit(0);
}
$argc=@ARGV;
main($argc,@ARGV);
sort_array.php
-----------------------------------
function c_sort(&$p,$n)
{
//int $i,$j,$k,$l;
for ($i=0;$i<$n-1;$i++)
{
$k=$i;
for ($j=$i+1;$j<$n;$j++)
{
if($p[$j] < $p[$k]) $k=$j;
}
if($i!=$k)
{
$l=$p[$k];
$p[$k]=$p[$i];
$p[$i]=$l;
}
}
}
function main($argc,$argv)
{
//int i,j;
//int n=10;
//int a[]={19,41,25,15,121,8,432,2,3,9};
$a=array(19,41,25,15,121,8,432,2,3,9);
$n=count($a);
//int b[10];
//int count=0;
if($argc<2) { printf("请指定排序执行次数!\n命令格式:cmd>;%s 次数",$argv[0]); exit(1); }
$count = (int)($argv[1]);
printf("重复执行%d次排序操作\n",$count);
printf("排序前: ");
for($j=0;$j<$n;$j++) $b[$j]=$a[$j];
for($i=0;$i<$n;$i++)
{
if($i>;0) printf(",%d",$a[$i]);
else printf("%d",$a[$i]);
}
for($i=0;$i<$count;$i++)
{
for($j=0;$j<$n;$j++) $a[$j]=$b[$j];
c_sort($a,$n);
}
printf("\n排序后: ");
for($i=0;$i<$n;$i++)
{
if($i>;0) printf(",%d",$a[$i]);
else printf("%d",$a[$i]);
}
printf("\n");
exit(0);
}
main($argc,$argv);
?>;
runtest.php
---------------------------------------------
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
echo "==================================================\n";
echo "<各种语言程序的执行速度测试比较,测试项目:排序算法>;\n";
echo "测试环境:Windows 2000 Professional\n";
echo "gcc version 3.4.2 (mingw-special)\n";
echo "java version 1.4.2\n";
echo "PHP 5.0.4 (cli) (built: Mar 31 2005 02:45:48)\n";
echo "perl, v5.8.7 built for MSWin32-x86-multi-thread\n";
echo "==================================================\n";
$lang=array("c","java","perl","php");
$t=array(4000000,4000000,20000,20000);
$cmd=array("sort_array.exe $t[0]","java sort_array $t[1]","perl sort_array.pl $t[2]","php sort_array.php $t[3]");
for($i=0;$i
printf("开始执行%s程序...\n",$lang[$i]);
$time_start = getmicrotime();
system($cmd[$i]);
$time_end = getmicrotime();
$time[$i] = round($time_end - $time_start,4);
if($i==0 || $t[$i]/$time[$i]<$low) $low=$t[$i]/$time[$i];
printf("%s程序执行完毕,花费时间%s秒\n",$lang[$i],$time[$i]);
printf("--------------------------------------------------\n");
}
printf("各种语言程序运行速度比较:\n");
$msg1="";
$msg2="";
for($i=0;$i
if($i>;0) { $msg1.=" : "; $msg2.=" : "; }
$msg1.=$lang[$i];
$msg2.=round(($t[$i]/$time[$i])/$low,2);
}
echo "$msg1 = $msg2\n";
?>;
2005-10-17 04:00 笨狗[研究] 程序执行速度
这种东西怎么可以放到win下面测试
2005-10-17 08:45 yoursmile[研究] 程序执行速度
这样测试太偏颇了吧。
2005-10-17 09:09 HonestQiao[研究] 程序执行速度
举一个简单的例子:
短跑运动员跑100米,比长跑运动员跑100米,肯定快。
但是那个好呢?
2005-10-17 09:22 lovered[研究] 程序执行速度
赞楼主精神
2005-10-17 18:46 Yarco[研究] 程序执行速度
2005-10-17 22:48 jasonli[研究] 程序执行速度
哈哈,各位严重了,我还没有对这个结果进行评价。我只是想试试程序基本操作(比较赋值等)的执行速度。请不要从这个测试结果评价任何语言的好坏。这只是我们应该知道的一些开发工具的特点而已。
2005-10-18 10:28 rocklv[研究] 程序执行速度
我觉得看问题,不能单独看啊,谁的网站只有php或者c啊,没有其他集成?
2005-10-18 18:37 艾斯尼勒[研究] 程序执行速度
作为服务器脚本嵌入的语言,php是否更适合跟jsp,asp.net来比较,而且好像还关乎web服务器的性能,而且php有两种运行方式好像在速度上有些不同吧
2005-10-18 19:38 dozec[研究] 程序执行速度
最爱C
2005-10-18 20:31 ipaddr[研究] 程序执行速度
C是很快,而且,移植性也很强,Unix下几乎是C的天下.
不过,C的开发效率还真是低了点.
2005-10-18 21:15 dozec[研究] 程序执行速度
有的时候感觉自己写php程序时间长了,脑袋有点笨了。
相反是在写C的时候才感觉自己是个程序员。
自己的感受,无意贬低任何一方。
页: [1]
查看完整版本: [研究] 程序执行速度
[研究] 程序执行速度(页 1) - Php - ChinaUnix.net - powe...
提升PHP执行速度全攻略
关于SAN的基本知识和应用(页 1) - ChinaUnix.net
[转载] DB2编程序小小技巧 - ChinaUnix.net
[原创] DB2编程序小小技巧 - ChinaUnix.net
ChinaUnix.net
用PHP实现通过Web执行C/C++程序
用PHP实现通过Web执行C/C++程序|
- 存储备份之家 - [原创]关于SAN的基本知识和应用(页 1) - ChinaUnix.net
完全用nosql轻松打造千万级数据量的微博系统(整理篇) - Php - ChinaUnix.net
用RHEL5.0自带的bind配置DNS服务(页 1) - DNS服务器 - ChinaUnix.net - Powered by Discuz! Archiver
- perl讨论区 - - chinaunix.net
SHELL 十三问 - ChinaUnix.net
[精华] 饮食文集。。。 - ChinaUnix.net
[精华] 英语名人名言 - ChinaUnix.net
pibazi.net图片上传程序 - 源码之家 - PHP源码 - 图片管理
PHP程序安全策略
PHP 程序加速探索
- it职业生涯讨论区 - - chinaunix.net
- c/c++讨论区 - - chinaunix.net
- linux讨论区/保留帖 - - chinaunix.net
ChinaUnix.net - SMTP&POP命令详解 !!!
Solaris下NFS使用手册 - Solaris - ChinaUnix.net
[保留] 齐白石作品欣赏 - ChinaUnix.net