yjcong 写了: 1)在处理大文件上,比如几百M, 几G的数据, 是不是会比C写的慢?
据网上传言,perl速度和C语言差不多,甚至比C语言快(
http://raid6.com.au/~onlyjob/posts/arena/)。
我也实测了一下:
[bash]
cjxgm@cjprods /tmp$ ls -lh ti
-rw-r--r-- 1 cjxgm users 35M 4月 30 14:48 ti
cjxgm@cjprods /tmp$ time sh -c "perl -ne 'print~\$_' ti > tout"
real 0m0.522s
user 0m0.353s
sys 0m0.080s
cjxgm@cjprods /tmp$ time sh -c "perl -ne 'print~\$_' ti > tout"
real 0m0.520s
user 0m0.340s
sys 0m0.083s
cjxgm@cjprods /tmp$ time sh -c "./a ti > tout2"
real 0m2.090s
user 0m1.857s
sys 0m0.067s
cjxgm@cjprods /tmp$ time sh -c "./a ti > tout2"
real 0m2.093s
user 0m1.777s
sys 0m0.143s
cjxgm@cjprods /tmp$ diff tout tout2
cjxgm@cjprods /tmp$ # 无输出,证明“置反”的结果正确
cjxgm@cjprods /tmp$ ls -lh
总用量 104M
-rwxr-xr-x 1 cjxgm users 5.2K 4月 30 14:51 a
-rw-r--r-- 1 cjxgm users 201 4月 30 14:51 a.c
drwx------ 2 cjxgm users 80 4月 30 12:20 CRX_75DAF8CB7768
srw------- 1 cjxgm users 0 4月 30 10:56 fcitx-socket-:0
drwxrwxrwt 2 root root 40 4月 30 10:56 systemd-private-AZLCqa
-rw-r--r-- 1 cjxgm users 35M 4月 30 14:48 ti
-rw-r--r-- 1 cjxgm users 35M 4月 30 14:50 tout
-rw-r--r-- 1 cjxgm users 35M 4月 30 14:52 tout2
cjxgm@cjprods /tmp$ cat a.c
#include <stdio.h>
int main(int argc, char * argv[])
{
if (argc != 2) return 1;
freopen(argv[1], "r", stdin);
int ch;
while ((ch = getchar()) != EOF)
putchar(~ch);
fclose(stdin);
return 0;
}
[/bash]
估计perl比C快是优化的缘故。
yjcong 写了:2)这个不好加规则或者带字典吧?
如果你会 perl,可以轻而易举地加规则或者带字典