膜拜大佬!
https://www.chengyao.xyz
@无名啊,github的markdown解析器应该也是这样啊,用空行隔开的段落会被转换为
<p></p>
,无论中间有多少空行都只会生成一对<p></p>
。所以实际上根本没有生成换行,你在这里看到的隔行效果只是
<p></p>
的边距。如果你就是想要多个换行,可以使用
[br]
。
这是[br]
叠加<p></p>
的效果。
@老虎会游泳,上一楼,想每段隔多几行回复来着。咋连续多行,被压缩成一行了。。
std::cin >> word
这个io可能比较慢确实,我改成
std::getline(std::cin, word)
后,就由 28 秒 → 25 秒了。你可以自行统计一下分段用时,看看输入、计算和输出各占比多少。
我简单测了测,读取 1 亿 15 长度字符串用时。
std::cin >> word
:5.1 秒std::getline(std::cin, word)
:2.2 秒- 手动开 64KB 缓冲区,每次
std::cin.read()
填充,std::memchr
找\n
,str.append()
构造:1.4 秒感觉输入上,这速度也可以了。
而且,我
strace
了一下 DuckDB,它也是要读到缓冲区里的,且缓冲区贼大,32MB。。且一定要填充完整 32MB,才干活。。怪不得我说,一边解压大文本/脚本实时生成内容,一边喂给 DuckDB,怎么耗时会变长。。明明 writer 产生内容的速度还挺快的呀。。
也许输入输出是大头(因为stdio是同步锁定的)
我取消与 stdio 同步了:
std::ios::sync_with_stdio(false);
。这个确实很耗时间。不取消的话,总时间直接翻倍。。
把文件mmap到内存然后使用
char*
指针直接访问如果想解压大文本,再通过管道喂给程序时,好像不能 mmap 了吧。。
可喜可贺,奇怪的姿势增加了
@张小强,不清楚,没人举报的话应该不会有事。
恭喜老虎喜提华为Pura 70 Pro+一部。
一加ace2Pro(灰|24+1024)
@老虎会游泳,webview应该不受影响吧
国外服务器的应该不影响
是通过服务器网站备案的形式进行限制,由服务器提供商进行app备案验证及http/tls阻断,类似普通网站备案。
@chenml4,那是我在电脑上装的Linux系统,不是控控。
@老虎会游泳,感谢虎哥,请问77楼是怎么登陆的呀~
可以 618就换这个了 小米现在解锁太麻烦了
小米6高配版(黑色)
层主 @艾木友尔尔巴 于 2024-04-21 07:25 删除了该楼层。
@无名啊,你可以自行统计一下分段用时,看看输入、计算和输出各占比多少。也许输入输出是大头(因为stdio是同步锁定的)。
@无名啊,
std::cin >> word
这个io可能比较慢,把文件mmap到内存然后使用char*
指针直接访问每行的内容可能更快,跳转到下一行就是上一行的指针加上一行的字节数。
@老虎会游泳,
DuckDB
也设成单线程的了。对比起来应该算公平的?
DuckDB
双线程时 14 秒,3+线程爆(笔记本 8GB 板载)内存了。。老虎看这代码,有啥不合理的地方,才拖累性能,打不过
DuckDB
吗?
我丢,这配置屌。
你充分利用多核CPU了吗?把任务分成多个部分跑在不同的CPU核心上,应该会比单线程快很多。就算各个部分得出结果之后还得合并再筛选一次,也应该比整体在单个CPU核心上运行更快。