完成两个整数的加法运算,编译执行的语言(比如C语言)是否一定比解释执行的语言(比如JavaScript)运行速度更快?为什么?
完成两个整数的加法运算,编译执行的语言(比如C语言)是否一定比解释执行的语言(比如JavaScript)运行速度更快?为什么?
你比较的目的是什么呢?因为【一定】的事是没有的。
编译执行时间=编译时间+执行时间
解释执行时间=解释时间+执行时间
仅比较【执行时间】,编译语言”可能“会快。
因为一切取决于你的定义的边界,比如:
计算两个大整数运算:
$ python -c "print(999999999999999999999999999999999+1)"
1000000000000000000000000000000000
用C语言这种计算得自己写算法或找相关的库了,这个时间就长了去了,写出来的还真”不一定“比Python内置的快,这取决谁写了。
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
这个问题本身就有点“问题”
不知道把一门语言分为"编译语言"和"解释语言"的说法是从哪来的,就好像问西红柿是水果还是蔬菜一样,实际上两者并不是二选一的关系。
从实现的角度来看
gcc
或者其他的什么编译器将c代码编译成机器码,你可以在对应的平台上执行这个文件,并不需要知道它是gcc还是clang编译的,很明显 gcc 是个编译器。TypeScript
将源代码转换为 javascript 但是不执行它,所以TypeScript
是个编译器。对于
javascript
呢,早期的一些实现可能只是解析源代码,遍历生成的语法树并执行它,这种实现毫无疑问它是一个解释器。但是现代的引擎(比如V8),代码首先会换转为内部的字节码格式,然后在VM内执行。说它是一个解释器没有问题,同时它也包含了编译的动作,首先是编译成字节码,然后是运行过程中的
jit
(Just-in-time compilation)。所以这个问题没有答案,
TypeScript
是一门编译语言,但它甚至没有能力执行自己生成的东西,哪来的执行速度呢 😂