C语言中内存页/块的实现
我想用C版本替换页面管理API的Java版本。C版本应该支持几乎无限的空间(耶!)和难以置信的速度(tm) 我还需要一个特殊的二进制搜索版本,但我可以自己做 问题是:C语言中内存页/块的实现,c,linux,performance,memory,C,Linux,Performance,Memory,我想用C版本替换页面管理API的Java版本。C版本应该支持几乎无限的空间(耶!)和难以置信的速度(tm) 我还需要一个特殊的二进制搜索版本,但我可以自己做 问题是: 什么页面大小最合适 有C语言的人通常使用的标准框架吗 在开销、操作系统资源等方面,创建这些块的最佳大小是多少 访问这些块的最佳方法是什么 memcpy是现代CPU中最好的一个,还是我需要汇编程序来挤出一些东西 是否可以按页面大小对齐这些块,以便所有内容都从页面大小的倍数的实际物理地址开始 映射文件呢?有线索吗 目标平台主要是I
- 什么页面大小最合适李>
- 有C语言的人通常使用的标准框架吗李>
- 在开销、操作系统资源等方面,创建这些块的最佳大小是多少
- 访问这些块的最佳方法是什么
- memcpy是现代CPU中最好的一个,还是我需要汇编程序来挤出一些东西
- 是否可以按页面大小对齐这些块,以便所有内容都从页面大小的倍数的实际物理地址开始
- 映射文件呢?有线索吗
有什么特别的说明吗?Martin,归根结底,C语言的替换很可能比您当前的java实现快几个数量级,不管页面大小如何等等。。。。您的内存方案将在开发过程中确定。使用C,您可以在直接内存分配和使用级别工作,并且可以完全根据需要定制内存使用。您可以使用整个系统的虚拟内存,并且可以从1字节开始使用块。(以2的幂块进行分配是一个安全的起点)
memcpy
和memove
都可以。你可以根据需要进行调整。我在“过于宽泛”和“主要基于观点”之间左右为难,因为两者之间有着密切的关系(不清楚你在问什么)。如果没有关于这个页面系统要做什么的信息,以及预期的使用模式,诸如此类的信息,我就不愿意尝试自吹自擂。此外,您还需要确定系统上总共有多少内存可用,以及系统上其他进程的工作负载,并且……嗯,需要大量信息才能给出有关调整大小问题的合理答案。没有一个标准的框架。