- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
背景:
I have a Java application which does intensive IO on quite large memory mapped files (> 500 MB). The program reads data, writes data, and sometimes does both.
All read/write functions have similar computation complexity.
I benchmarked the IO layer of the program and noticed strange performance characteristics of memory mapped files:
- It performs 90k reads per second (read 1KB every iteration at random position)
- It performs 38k writes per second (write 1KB every iteration sequentially)
- It performs 43k writes per second (write 4 bytes every iteration at random position)
- It performs only 9k read/write combined operation per second (read 12 bytes then write 1KB every iteration, at random position)
The programs on 64-bit JDK 1.7, Linux 3.4.
The machine is an ordinary Intel PC with 8 threads CPU and 4GB physical memory. Only 1 GB was assigned to JVM heap when conducting the benchmark.
If more details are needed, here is the benchmark code: https://github.com/HouzuoGuo/Aurinko2/blob/master/src/test/scala/storage/Benchmark.scala
And here is the implementation of the above read, write, read/write functions: https://github.com/HouzuoGuo/Aurinko2/blob/master/src/main/scala/aurinko2/storage/Collection.scala
所以我的问题是:
谢谢。
最佳答案
内存映射文件性能取决于磁盘性能、文件系统类型、可用于文件系统缓存的可用内存和读/写 block 大小。 linux 上的页面大小是 4K。因此,您应该期待 4k 读/写的最佳性能。如果页面未映射,则随机位置的访问会导致页面错误,并将读取新的页面。通常,如果您希望将文件视为一个内存数组(或 Java 中的 ByteBuffer ),则需要内存映射文件。
关于java - 内存映射文件的性能特点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14787674/
什么是 Kotlin? Kotlin 是一种现代、流行的编程语言,由 JetBrains 在 2016 年发布。 自发布以来,它已经变得非常流行,因为它与 Java 兼容(Java 是目前最流行的
不要问如何,但我以某种方式创建了一个带有单个句点字符 (.) 的目录名称,并且由于这是目录导航的特殊字符,我不知道如何删除它! drwxr-xr-x 6 admin admin 4096 Nov
不要问如何,但我以某种方式创建了一个带有单个句点字符 (.) 的目录名称,并且由于这是目录导航的特殊字符,我不知道如何删除它! drwxr-xr-x 6 admin admin 4096 Nov
我有一个小文件,其中包含一些我想用“|”分割的内容性格。 当我尝试使用任何其他字符(例如“>”)时,它工作得很好,但使用“|”时效果很好。性格,有一些意想不到的结果。 该行本身(此处带有 > 字符)
我想使用mysql在数据库中保存额外的生僻汉字,但继续显示???将文本插入表格后。之前我搜索过如何在mysql数据中插入任意4字节的汉字,并按照过程( "Incorrect string value"
这个字符是什么意思? 最佳答案 那将是一个 HTML 编码的换行字符(使用十六进制值)。 十进制值为 关于html - 是什么 特点?,我们在Stack Overflow上找到一个类似的问题: htt
1. 引言 在Go语言中, init() 函数是一种特殊的函数,用于在程序启动时自动执行一次。它的存在为我们提供了一种机制,可以在程序启动时进行一些必要的初始化操作,为程序的正常运行做好准
我不明白哪些行应该以 JQuery 中的分号 ; 字符终止。 目前,出于安全考虑,我只是用它终止每一行。但是有什么地方和时间使用它的规则吗? 最佳答案 首先,JQuery 是一个库(Javascrip
terraform init成功初始化但卡在 terraform 计划上。 该错误与功能块有关。我不确定在哪里添加功能块: Insufficient features blocks (source c
在哪里可以阅读有关 cakephp 2.0 功能的更多信息? 因为我可以找到 symfony 2.0 演示文稿,但找不到 cakephp 2.0 谢谢 最佳答案 CakePHP 2.x 。右侧有迁移指
我注意到我的 double 包含不同精度的字符,具体取决于区域设置。 例如: 3,47 或 3.45 如何强制 double 始终包含 . 精度字符? 问题是,一旦我将包含此 double 值的类序列
我想将“U+1F1FA U+1F1F8”等 Unicode 代码点表示法转换为“🇺🇸”。 在 javaScript 中,到目前为止我尝试过的是 String.fromCharCode(parseI
将 — 发送到 foursquare 时,它显示为 ?在他们的网站上,而不是——,长破折号。它在 Android 应用程序中看起来很好(我使用\u2014 显示它),但在 foursquare 网
到目前为止,我知道 EOF 是一个特殊字符,自动插入到文本文件的末尾以指示其结束。但我现在觉得需要对此进行更多澄清。我在 Google 和 Wikipedia 页面上查看了 EOF,但他们无法回答以下
我正在尝试使用基于 .split-string 的“split-string”函数来拆分字符串。特点。但(split-string "1.2.3"".") 根本不起作用。它只是返回一个可变数量的空字符
这可能是重复的。我已经搜索过,但不确定要使用哪些术语。如果你能找到重复的,谢谢,我会删除这个问题。 我听说 history.js 是“最好的”深度链接 ajax 库,因为它对旧版浏览器的兼容性最好。然
我是一名优秀的程序员,十分优秀!