php 打开并写入文件 10万次
<?php $start_time = microtime(true); for ($i=0; $i < 100000; $i++) { $myfile = fopen("php_log.txt", "w") or die("Unable to open file!"); $txt = "-- 测试写入文件末尾注释\n"; fwrite($myfile, $txt); fclose($myfile); } $end_time = microtime(true); var_dump(($end_time-$start_time)*1000);
耗时 6955.2180767059 毫秒 即 接近 7 秒
换成 file_put_contents 试试
耗时 7004.5571327209 毫秒 即 7 秒多一点
那说明其实这两种写法差异不大。
采用lua语言试试 由于10万次写入时间太短,改为100万次统计方便点
print(os.time() .. "---"..os.clock()) for i=1,1000000 do file = io.open("lua_log.txt", "a") io.output(file) io.write("-- 测试写入文件末尾注释\n") io.close(file) end print(os.time() .. "---"..os.clock())
打印结果如下:
1624246878---0.00437 1624246884---6.618569
耗时 6.6 秒 ,但是这是100万次哦,所以结果要处以10, 即 660 毫秒,也就是 0.66 秒
然后发现lua的速度是php的10倍左右
然后试试C语言呢 由于C语言实在是太快了,我只好让它写入1000万次
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/time.h> int write_file_now(char *str); int main(int argc, char *argv[]) { struct timeval tvafter,tvpre; struct timezone tz; gettimeofday (&tvpre , &tz); long msecond_diff = 0; char *write_str = "-- 测试写入文件末尾注释"; write_file_now(write_str); gettimeofday (&tvafter , &tz); msecond_diff = (tvafter.tv_sec-tvpre.tv_sec)*1000+(tvafter.tv_usec-tvpre.tv_usec)/1000; printf("%ld\n", msecond_diff); return EXIT_SUCCESS; } int write_file_now(char *str) { FILE *fp = NULL; fp = fopen("./c_log.txt", "w+"); for(int i = 0;i < 10000000; i++) { fputs(str, fp); fprintf(fp,"\n"); } fclose(fp); return 1; }
耗时 537 毫秒,也就是 0.537 秒 ,但是这是1000 万次,要处以 100 得到 5.37 毫秒
这样的话我们大概算一下统计
10万次写入 | 耗时(毫秒) |
php fopen fwrite | 6955 |
php file_put_contents | 7004 |
lua | 660 |
c | 5.37 |