VBS和C语言效率比较

标签: , , , ,

上一篇文章讲到用VBS写二进制文件,为了写二进制文件,首先我们要得到一个文件的二进制值的数组。可以通过程序获取文件的二进制值,本来我是用VBS实现的,但是发现VBS效率实在太低,只好改用C语言。一直知道VBS的效率是很低的,但是不知道和C语言比差多少,于是就有了这篇文章。两个程序都是读取文件的二进制值并转换成十进制后写入一个txt文件,并输出程序运行的时间。

VBS程序代码

Option Explicit
Dim begin_time,end_time,elapse_time
Dim str,length,i,c
Dim ado,fso,file
begin_time = Timer
Set ado = CreateObject("adodb.stream")
Set fso = CreateObject("scripting.filesystemobject")
Set file = fso.OpenTextFile("foo.txt",2,True)
ado.Type = 1
ado.Open
ado.LoadFromFile("foo.jpg")
str = ado.Read
length = LenB(str)
For i = 1 To length
	c = AscB(MidB(str,i,1))
	file.WriteLine c & "," & "_"
Next
ado.Close
end_time = Timer
elapse_time = end_time - begin_time
WScript.Echo elapse_time

C语言程序代码

#include <stdio.h>
#include <time.h>
int main(void)
{
	clock_t end,begin=clock();
	int c;
	FILE *in,*out;	

	in = fopen("foo.jpg","rb");
	out = fopen("bar.txt","wb");
	while((c=fgetc(in))!=EOF)
		fprintf(out,"%d\r\n,_",c);
	end = clock();
	printf("%f\n",(float)(end-begin)/1000);
	return 0;
}

同是用一个100kb大小的foo.jpg文件作测试,VBS程序平均运行了7.5秒左右,而C语言程序只运行了0.04秒左右,效率的差别可以看出。如果文件的大小增大,效率的差别更加的明显。

随机文章:

  1. VBS列出进程加载的DLL的完整路径
  2. MySQL快速插入大量数据——使用LOAD DATA语句
  3. PHP & JavaScript: UTF-16 to UTF-8
  4. 在VC中编译运行程序的小知识点
  5. VBS获取GZIP压缩的HTTP内容

留下回复