递归火山软件开发平台

标题: 与以语言的简易速度对比 [打印本页]

作者: szk820628    时间: 2020-12-23 17:37
标题: 与以语言的简易速度对比
本帖最后由 szk820628 于 2020-12-23 18:17 编辑

本人测试了易语言 和 火山PC 的速度对比,对比方式如下:

分别进行了最简单的  》》》  *万次数组加入成员!!!

分别是 100W次数组成员加入,200W次数组成员加入,300W次数组成员加入,400W次数组成员加入,500W次数组成员加入

前期速度基本一致,在400W,500W的数组计算中,火山PC比易语言多用了2秒!!!

可惜啊,测试版本的火山PC惜败。。。。希望这是测试版的原因啊。

作者: fengshangren    时间: 2020-12-23 18:23
吴总封的核心库,整体效率都不是很高,不知道为什么,字节集操作类的效率比易语言还低。但是嵌入的C代码效率就很高。吴总还是可以稍微注重一下效率
作者: 0晨鹤0    时间: 2020-12-23 19:04
我在一开始就提过潜在的效率风险,可惜被忽略了。
这也是没办法,火山的定位就是简单为主而不是效率为主。

火山是把其他语言套一层壳子变成火山类库。但是封装不是简单的翻译,吴总要求封装后的函数必须通俗易懂,让用户只看注释就能学会使用。一个很浅显的道理:越底层的代码效率越高,因为可以针对性优化;相反封装越简单的代码效率越低,因为要考虑普遍情况。

举个简单的例子,假设多选列表有一个函数叫 “取选中行()”。这个函数只需一句话就可以实现需求,非常通俗易懂。但关键在于你不知道他怎么实现的。是每次都遍历一遍?还是有个选中数组来缓存?如果是前者,而你不知道这个知识,那么错误的使用(例如在循环中取选中行)就会非常非常低效。相反,如果是后者实现的,但你不知道,为了提高效率自己又缓存一遍,这就浪费了内存。

因此,封装虽然对新手隐藏了内部实现,但同时也降低了针对性优化的可能性。上面是一个很简单的例子,实际情况复杂的多。例如,我见过很多在 Android 上需要几十上百行代码的功能被封装成一句话。看起来似乎很实用,但实际上很可怕,因为你根本不知道他内部究竟干了什么,所以不知不觉间,程序的整体效率就被拉开了。

事实上,很多看似一句话的代码,里面包含了对象的创建与释放,甚至生命周期管理。这种代码倘若大量在循环中使用,后果是灾难性的。虽然现在设备性能足够折腾,但要是所有应用都像火山这么玩的话,也拖垮了。

所以,真的在意性能,就不应该考虑火山。

作者: 伟业    时间: 2021-7-11 14:56
路过.....
作者: kyozy    时间: 2021-7-11 15:51
楼主的代码, 在火山里面, 计次循环() 里面的次数不要每次都计算, 用一个变量保存下来, 否则每次循环都会去执行一次, 当然就慢了
作者: ZCXXX    时间: 2021-7-11 16:26
把火山代码 换成  
循环(,内容*10000,i)
数组.加入成员(i)

我觉得循环 比计次循环高效
作者: xiaoai    时间: 2023-4-27 01:57
0晨鹤0 发表于 2020-12-23 19:04
我在一开始就提过潜在的效率风险,可惜被忽略了。
这也是没办法,火山的定位就是简单为主而不是效率为主。
...

这么一看,官方描述中的 "具有无与伦比的运行速度" 就更开玩笑一样
作者: 793359277    时间: 2023-4-27 02:44
xiaoai 发表于 2023-4-27 01:57
这么一看,官方描述中的 "具有无与伦比的运行速度" 就更开玩笑一样

你这个坟,挖的有意思吗,2020年底的帖子,隔了两年半这还回什么啊?
作者: 朕的    时间: 2023-4-27 03:59
好像火山计次循环好像会每次循环都会读取一下循环次数的参数,而易语言就不会
作者: hcwanz    时间: 2023-4-27 08:57
xiaoai 发表于 2023-4-27 01:57
这么一看,官方描述中的 "具有无与伦比的运行速度" 就更开玩笑一样

眼光别这么窄,火山效率低是相对c来说的(实际也不算慢,毕竟大点的项目都会封几层),c本身就是最快的了
作者: 67564226    时间: 2023-4-27 09:58
你们都是高手, 我要不是效率, 要的是像易语言一样, 画界面超级方便, 即拖即用. 所见所得.......  这才是主题.
要效率的人, 直接用汇编得了.  其它都没必要学.
作者: xiaoai    时间: 2023-4-27 16:43
hcwanz 发表于 2023-4-27 08:57
眼光别这么窄,火山效率低是相对c来说的(实际也不算慢,毕竟大点的项目都会封几层),c本身就是最快的了 ...

说是这么说但是怎么也不应该比易语言慢吧...
作者: hcwanz    时间: 2023-4-27 17:52
xiaoai 发表于 2023-4-27 16:43
说是这么说但是怎么也不应该比易语言慢吧...

火山也就编译比易语言慢吧,运行速度不慢
作者: gzylove    时间: 2023-4-27 19:42
火山 除了文本相加  其它比易语言快多了
作者: Xelloss0618    时间: 2023-4-27 20:09
xiaoai 发表于 2023-4-27 16:43
说是这么说但是怎么也不应该比易语言慢吧...

前面已经有人提到了,写法有问题。
火山(C/C++)的循环条件是每次进入循环都会重新计算的,所以楼主这个代码等于循环了500万次取编辑框内容,自然就慢了。
直接填次数500万次,就这个测试代码而言,主要耗时都在重新分配内存上,易语言和火山的速度都差不多。
不过火山只要加一句代码,给数组类预分配尺寸,就会比易语言快十倍以上。
作者: li327065266kun    时间: 2023-4-27 21:22
gzylove 发表于 2023-4-27 19:42
火山 除了文本相加  其它比易语言快多了

:噜阿噜 文本跟字节集用命令相加快,用直接 + 号相加慢




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4