libook
2020-10-21 11:40:48 +08:00
你想精准控制内存,就得直接控制内存芯片,最接近这个目标的可能是单片机。
JS 的内存管理被抽象出了几层,比如 JS 引擎有自己的“内存”管理机制,运行引擎的操作系统也有自己的“内存”管理机制,操作系统运行的硬件系统也有自己的内存管理机制。你在 JS 层去看内存情况只能看到 JS 引擎抽象出来的内存情况,在 JS 引擎层看也只能看到操作系统给 JS 引擎抽象出来的内存空间情况。
CPU 通常不会直接用内存数据进行计算,而是会经过有多级缓存,最终到达 CPU 的寄存器再真正执行计算,而多级缓存、寄存器的情况和使用方式也都影响计算效率。
JS 是一种抽象程度很高的语言,不同 JS 引擎的底层实现有差别,可能会为了优化执行效率、内存占用量玩各种内存优化,而且现代 JS 引擎的执行效率极高,完全能满足绝大多数业务场景,而且如今做极致性能优化的成本可能会高于性能浪费的成本,所以有时候加硬件是更经济的方案。
在操作系统级别有对计算和存储性能较高的要求,可以考虑使用 WebAssembly 方案,使用 C\C++\Rust 等系统开发语言写高性能程序,然后通过 WebAssembly 技术与 JS 程序交互。如果使用 Node.js 还可以考虑 N-API 方案。