Rust include_字节的运行时成本是多少!或者包括??

Rust include_字节的运行时成本是多少!或者包括??,rust,Rust,宏和宏对我来说似乎是个谜。我知道该文件包含在二进制文件中,但它在运行时是如何工作的 文件何时加载到内存中 是否有任何理由不存储include\u字节的结果/包括作为顶级常量?在应用程序运行的整个过程中,文件是否会一直保存在内存中 除了二进制大小外,包含“大”文件是否有任何惩罚 没有运行时CPU成本 该文件在编译时包含在二进制文件中。当操作系统加载二进制文件时,它将与可执行代码一起放入内存中 我鼓励使用静态或常量变量作为include\u字节/include\u str。不管怎样,包含的数据都将在

宏和宏对我来说似乎是个谜。我知道该文件包含在二进制文件中,但它在运行时是如何工作的

  • 文件何时加载到内存中
  • 是否有任何理由不存储
    include\u字节的结果/
    包括作为顶级
    常量
    ?在应用程序运行的整个过程中,文件是否会一直保存在内存中
  • 除了二进制大小外,包含“大”文件是否有任何惩罚

  • 没有运行时CPU成本

  • 该文件在编译时包含在二进制文件中。当操作系统加载二进制文件时,它将与可执行代码一起放入内存中
  • 我鼓励使用
    静态
    常量
    变量作为
    include\u字节
    /
    include\u str
    。不管怎样,包含的数据都将在内存中,除非编译器已经确定它是未使用的,并且它被优化了
  • 没有
  • 另见:


    查看该链接,它看起来好像
    静态
    数据存储在与堆栈不同的位置,这意味着它不会意外地膨胀程序指令周围的区域。(CMIIW.)注意,操作系统通常会在加载程序时将数据放入虚拟内存。除非您访问它,否则它不会加载到RAM中。操作系统很有可能只是标记虚拟内存由可执行文件支持。它只会加载它主动需要更改的东西,比如对共享库地址的引用。只有当处理器、代码或数据实际需要时,才会加载其他所有内容。在这种情况下,包含字节实际上可能比使用打开的文件更有效。@Stargateur它可以通过两种方式更有效:1)如果您实际上不需要所有字节,操作系统可能能够跳过加载一些页面,如果一个简单的打开和加载到缓冲区会强制加载页面。2) 如果您正在加载大量数据,然后操作系统出于某种原因需要分页该数据,如果您使用了include_字节,它可能能够避免将数据写入交换,因为它知道它可以从可执行文件加载数据。