grep和sqlite3哪个快?
sqlite3.c 8413KB 243617行,平均每行34.53个字节。行与行之间用\n (0x0a)分隔。 最后一行是: /************************** End of sqlite3.c ******************************/ 在一台很老的笔记本上: $ time grep 'End of sqlite3.c' sqlite3.c /************************** End of sqlite3.c ******************************/ real 0m0.115s user 0m0.011s sys 0m0.000s $ time wc -l sqlite3.c 243616 sqlite3.c real 0m0.272s user 0m0.007s sys 0m0.014s 原因可能是:虽然只显示行数,wc (word count)还统计了别的。 sqlite3的.import的--skip 0不好使;它总把第一行当表头。 --ascii Use \037 and \036 as column and row separators 八进制的036是十进制的30和十六进制的1e: Record Separator MadEdit里把十六进制0a换1e,慢到卡死。可能是因为不支持一行长达840万个字符。:-) $ cat t.awk # 0a还留着,后面加个1e BEGIN { print "line\036" } { print $0 "\036"} $ time awk -f t.awk sqlite3.c >t.txt real 0m9.265s user 0m0.352s sys 0m0.475s $ sqlite3 t.db sqlite> .import --ascii --skip 0 t.txt t sqlite> .schema t CREATE TABLE IF NOT EXISTS "t"( "line" TEXT ); sqlite> select count(line) from t; 243617 sqlite> select * from t where line like '%End of sqlite3.c%' ;
/************************** End of sqlite3.c ******************************/ sqlite> 分别不如wc和grep快。t.db 11MB. create index后21MB.
Windows 10, WSL2, Debian, apt-get装的sqlite3 3.34.1 2021-01-20
- sqlite where like简单测试
- 各种数据分析工具所能处理的数据量大概是多少?
- 单表10亿条记录(100G左右)的数据用哪个数据库较好?
- 10GB / 50M行 = 200 字节行。
可能SQL型数据库首先强调数据安全,其次SQL语句的"英语性",最后才是性能。CPU比过去快了很多很多。SSD的随机存取速度比硬盘快得多。
PLEASE SELECT all columns FROM COMPANY GROUP BY name HAVING three. 更英语些。:-) ChatGPT不先学写SQL?
2的26次方是6700万,32次方是40亿。从排好序的40亿个整数中find(x),二分法32次即可找到。高档复杂的like %str%——它们也不快啊。当然,二叉排序树可能很不平衡,qsort未必nlog(n)……
fgrep,即grep -F, --fixed-strings,好像反而慢一点。rgrep是grep -r, --recursive,好像可以取代find . -name '*.c' | xargs grep?
$ rgrep Cosmin /usr /usr/include/libpng16/pnglibconf.h:/* Copyright (c) 2018-2019 Cosmin Truta */ ... $ rgrep Cosmin /usr/include/*.h 不到/usr/include/libpng16下去找 $ rgrep Cosmin /usr/*.h grep: /usr/*.h: No such file or directory
sqlite里.import 时--skip -1也不好使,虽然不报错。.说不定来自dBase. dBase was one of the first database management systems for microcomputers and the most successful in its day.