java - 在执行 mmap 时,C 或 Java 会有明显的性能差异吗?

标签 java c mmap memory-mapped-files

我有一个 50GB 的文件,它是一个排序的 csv 文件。

如果我使用 C 或 java 使用内存映射访问对该文件执行查找,理论上会有什么不同吗?

我猜既然文件访问被下推到操作系统级别,它真的应该不会有太大区别,对吧?

最佳答案

理论中,由于 Java 的面向对象方法调用需要额外的间接访问,并且可能由于需要跨越 Java/JNI 边界,因此 Java 的速度将无限慢。 p>

实践中,Hotspot 编译器优化了直接访问 ByteBuffer,页面错误的代价将远远超过额外的内存间接访问。

关于java - 在执行 mmap 时,C 或 Java 会有明显的性能差异吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15617920/

相关文章:

c - strtok() 将一些字符附加到我的字符串

c - 二进制 == 在 'int' 和 'struct member' 之间,当两个值都是 int 时

C - 释放结构

Linux/perl mmap 性能

c++ - 使用 mmap 逐行读取文件

c - 如何在不关心 MAC 地址的情况下使用 packet_mmap 发送 SOCK_DGRAM 数据包?

Java 代码 - 纸牌

Java - 无法在静态类中声明对象

java - 打印数组中的字符串而不打印 null,Java

类成员变量需要 Java "volatile"吗?