吐个槽, 顺便记录.
结论: php 完败
有个项目:
1, 客户提供数据,
2, 生成新的文本
3, 将文本写入磁盘, 大概 5kb 左右
客户抱怨文件生成速度太慢了. 有时候, 需要生成上万个文件.
花了点时间, 将 2 的处理方法, 单独抽出来, 并转成 python. 分别测试...
2 这个过程, 循环 10000 次, php 和 python 花的时间都差不多, 在 35s 左右.
在这 10000 次循环里, 又加上了 3, 每次循环都会写文件. 注意,每次文件内容都是不同的.
python 在 2 的时间基础上, 多了 2, 3 秒. 试了 with open 和 f = open, f.write, f.close 两种方法, 都差不多
php 则多了 10 多秒. 试了 file_put_contents 和 fopen, fwrite, fclose....
不信邪, 研究了一晚上的 php 扩展
// php_stream *stream;
char *filename;
int filename_len = 0;
char *data;
long data_len = 0;
// long numbytes = 0;
FILE *fp;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ps", &filename, &filename_len, &data, &data_len) == FAILURE)
return;
fp = fopen(filename, "w");
fwrite(data, data_len, 1, fp);
fclose(fp);
// stream = php_stream_open_wrapper_ex(filename, "w", 0, NULL, NULL);
// numbytes = php_stream_write(stream, data, data_len);
// php_stream_close(stream);`
RETURN_LONG(data_len);
`
都这么短了, 速度能快点了吗... 直接破 50s, 现在浏览器还显示57.454752206802
无语了...
还试过 swoole 的 swoole_async_writefile, 写入文件超级快的... 只是很快 too many open files, 进程挂掉
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.