分享

为什么现代CPU每秒数亿次计算,但是程序仍旧很卡?

 半佛肉夹馍 2023-10-20 发布于河南

我来提供另一个视角吧。

现在为了便宜、方便,绝大部分程序是用脚本语言写的。

这是因为脚本语言入门简单,很容易就能雇到程序员;而公认高效的编译型语言如C、C++、Delphi,或者即地编译的Java等专业语言入门门槛很高——起码知乎上已经有很多人持续好多年的希望它们灭绝了。以至于一旦我提到C,经常就有一票人在我的评论区酸溜溜的对以汇编……

但是,python/php/js之类语言的性能是非常糟糕的。比如这个就是一个很不全面的测试:

来自: Python与C语言、Java、Nodejs、Golang进行性能测试比较 - 云+社区 - 腾讯云 (tencent.com)

可以看出,在查找质数这个测试场景下,C/Java的执行效率是python的20/17倍。

这是个什么概念呢?

现代CPU的主频大约是4~5G,它的1/20是250MHZ。

换句话说,不考虑多核因素,只算单核性能的话——你以为你在用最先进的i9?

错。你不过是在用老掉牙的、1997年上市的奔腾2代罢了。

24年前的老爷车能跑出这个效果,知足吧。

当然,奔腾2也很强了。对个人用户的常规任务来说,它完全是性能溢出。这就是python、js大行其道的根本原因——对你来说,它足够用了。

但,这也正是C/C++、Java必须继续存在的根本原因——在它们的帮助下,才能让python把i9当奔腾Ⅱ 266MHZ用,帮你处理点不需要性能的日常任务。一旦需要性能……

尤其是,为了方便、易控制,现在恨不得一切都用h5跑在浏览器里。

注意这里并不是说脚本语言是程序卡的根本原因;事实上,电脑上所有性能敏感的地方,跑的都是C/C++或者Java(甚至,由于GC造成的stop world问题,很多地方Java都是不能用的);现代的高分辨率高帧率图像的确也需要非常非常多的性能。

这里说的是:类似脚本语言替代编译型语言这样,为了方便程序员、降低开发费用而作的“负优化”特别特别的多,多到已经规模化、系统化、标准化的程度了。

在这些“负优化”的共同努力下,你的电脑经常要发着i9的热,享用着奔腾Ⅱ的性能……如此一来,你不卡,谁卡?

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多