百科问答小站 logo
百科问答小站 font logo



如何系统地测试一门语言(规定工具链,运行时,以及运行环境)的性能? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

这个问题和如何系统的测试一个字符集的压缩率一样……


本质上语言和性能是八杆子打不着的东西……就算你规定运行时,那怎么写还是自由的。一定要测试,那测出来的也是这个运行时或者说语言实现上对于单元测试的支持力度,例如是不是支持SIMD、内嵌汇编又或者是C互操作性啥的。这跟语言又有什么关系呢?


举个极端的例子,假设我们设计一个测试用例用来测试两个32位整数相乘的性能。这里有两个语言,一个支持乘法,一个不支持乘法,是不是直觉上认为支持乘法的语言必然会在性能上好更多?


特错大错,如果支持乘法的语言的编译器和运行时不支持乘法,那编译出来实际执行的指令仍然是大量的加法。而不支持乘法的语言的编译器和运行时支持将相同数连续累加优化成乘法,那反而可以执行乘法的指令。

觉得不可能吗,那请问目前主流的编程语言里面几个有SIMD语法的?



所以你搞反了,你测的就是运行时和编译器,语言只是编译器的一个特性而已……

有的编译器还支持多种语言编译呢,譬如说roslyn……

虽然我没有仔细看代码,但是感觉上roslyn里面VB.NET和C#就前端不一样。换句话说,AST是同一个……

说白了,要支持Java,不考虑基础类库的话,比支持VB.NET还简单,把C#的前端改改就行了。




  

相关话题

  一个程序员多年累计编写一百万行代码是什么体验? 
  如果加班是自愿的,你们会为了钱加班吗? 
  阿里巴巴 P8、P9 及以上到底是什么水平? 
  程序员离开大厂进工厂,越来越多高学历人才加入制造业,如何看待这一趋势,会带来哪些变化? 
  腾讯阿里顶级工程师和普通 985 博导,谁的计算机水平更高,各自强项都是什么? 
  程序员为什么越老越贬值的厉害? 
  CIL instructions和Java byte code的表达能力一样吗? 
  面向对象程序设计比传统的面向过程程序设计更有什么好处? 
  0基础开始,Leetcode200道题要多久左右? 
  作为程序员,你在编程时享受过哪些数学带来的好处? 

前一个讨论
一个国家男性地位低,会被认为是一件光荣和进步的事情吗?
下一个讨论
永不停止的让渡是否自然而然的通过赋予永久的使用权导致发生了所有权的转移(暂定)?





© 2024-05-18 - tinynew.org. All Rights Reserved.
© 2024-05-18 - tinynew.org. 保留所有权利