我认为明显的优点是可维护性、程序员友好性等,但缺点是什么?
编译器是否需要额外的工作来转换可能不需要的地方?
由于上述缺点,是否存在低级语言更适合任务的情况?
我认为明显的优点是可维护性、程序员友好性等,但缺点是什么?
编译器是否需要额外的工作来转换可能不需要的地方?
由于上述缺点,是否存在低级语言更适合任务的情况?
简而言之:由于非常具体的优化,低级语言可以产生更好的性能。
低级语言的优点:
高级语言的缺点:
这里是 LLL 优势的更详细列表:
- 您可以访问与机器相关的寄存器和 I/O
- 您可以控制关键部分中的确切代码行为,否则可能涉及多个软件线程或硬件设备之间的死锁
- 你可以打破你常用编译器的约定,这可能允许一些优化(比如暂时打破关于
内存分配、线程、调用约定等的规则)- 您可以使用不兼容的约定在代码片段之间构建接口(例如,由不同的编译器生成,或由
低级接口分隔)- 您可以访问处理器的异常编程模式(例如,16 位模式来接口启动、固件或
英特尔 PC 上的旧代码)- 您可以为紧密循环生成相当快的代码,以应对糟糕的非优化编译器(但是,有免费的优化
编译器可用!)- 您可以生成针对您的特定硬件设置完美调整的手动优化代码,但不能针对其他人的
- 您可以为您的新语言的优化编译器编写一些代码(这是很少有人会做的事情,甚至他们也不经常这样做)
- 即你可以完全控制你的代码
不自己分配内存是一回事。语言背后的程序员创建垃圾收集器,他们有时(大部分)给你大量的内存。
以 JavaScript 为例。如果你这样做var arr = array(501);
,它可能会给你 600 个字节,或者 1000 个甚至更多。
对于嵌入式设备或视频游戏(PS4 上的游戏等)上的操作系统等低级程序,内存至关重要。因此,您无法承受超出您需要的空间。