我一直在阅读Wikipedia's article on K programming language,这就是我所看到的:
该语言的小型解释器和紧凑语法使K应用程序完全适合处理器的1级缓存。
我很感兴趣。如何将整个程序放在L1缓存中?比方说,CPU有256kb的L1缓存。假设我的程序比这少,并且它需要很少的内存(比如,仅用于调用堆栈等)。比如,它不需要任何库(虽然如果程序是用于操作系统,则需要包含kernel32.dll或其他)。并不是OS会自动为任何程序分配一些最小内存(好吧,对于可执行代码,堆栈和堆)?
谢谢。
答案 0 :(得分:5)
我认为他们所说的不是整个程序适合L1缓存,而是大部分时间运行的所有代码都适合L1缓存。
是的,操作系统会分配许多其他结构,但这些结构很少被打到无关紧要。
当然,这都是猜测 - 我对'K'语言一无所知。
答案 1 :(得分:4)
我相信他们说的是主执行代码适合L1缓存的优势;无论分配给程序的内存如何。加载K应用程序后,如果它从未触及该内存,那么它是否按性能分配(即完全在L1缓存中的性能优势)并不重要。
答案 2 :(得分:2)
您将所有程序代码与最常执行的代码混淆。
对于解释型语言,解释器核心肯定是最常执行的代码之一。在缓存中执行最频繁的代码可以加快执行速度,就像在缓存中访问最频繁的数据一样。
关键部分是“最频繁” - 没有必要缓存所有代码/数据以查看显着的加速。
答案 3 :(得分:1)
解释器作为由OS管理的普通程序运行。解释的程序在数据段中的解释器的存储空间内运行。许多K程序可以很容易地完全适应L1缓存,即使整个解释器可能没有。主解释器循环可能适合。