2025年strncpy详解(strncpy strlcpy)

strncpy详解(strncpy strlcpy)概述 最近经常听别人的面试题目是读取一个大文件 然后出来读取到的字符串 比如某串的个数了 某串的出现频率之类的 和朋友聊天过程中决定用不同的语言比个赛 分别是 c python shell 我原本以为 c 语言一定会获胜 毕竟以效率著称 但结果却是 python 完胜而且是数量级上的完胜 正当我感叹 python 大法好时 题目 一 c 语言实现版 c 语言版就是直接从文件中一个字符一个读取

大家好,我是讯享网,很高兴认识大家。



概述:最近经常听别人的面试题目是读取一个大文件,然后出来读取到的字符串,比如某串的个数了,某串的出现频率之类的,和朋友聊天过程中决定用不同的语言比个赛,分别是c,python,shell。我原本以为c语言一定会获胜(毕竟以效率著称),但结果却是python完胜而且是数量级上的完胜,正当我感叹python大法好时。。。
一.c语言实现版

c语言版就是直接从文件中一个字符一个读取,然后判断,最终输出时间。我们看下用时。

用了6s时间,计算出有个root

二.shell版本

使用shell的好处就是简洁,但是速度就不敢恭维了


讯享网

用12s,计算出个root

三.python版本

通过python的上下文管理器打开文件,在使用内建的count函数计算每行的root个数,代码简洁程度一点都不比shell差。

多线程版本好像并没有多少提升,但是计算的好像有点问题,应该是切片的时候正好切到了root,导致计算出错。比正常计算的少了两个。

四.python的复制的原理

其实这个发现是一个巧合,大家有没有发现,我是先运行了其他版本的读取程序,最后才运行的python版本的程序。问题就出在这里,刚才我重启了次电脑,优先运行了一下python的程序,我发现速度变慢了。如下:

cache明显增加了。证明了我们的猜想,python是会读取cache中的数据,所以会比其他的快很多。

小讯
上一篇 2025-06-03 17:06
下一篇 2025-05-12 19:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/187250.html