Ашмем медленнее чем файлы?
Я смотрю на использование Ashmem, чтобы помочь пару процессов координировать. Прежде чем начать тратить усилия на его использование, я подумал, что увижу, какое ускорение он предлагает по сравнению с обычным файлом.
try {
Random random = new Random(System.currentTimeMillis());
byte[] buf = new byte[4096];
random.nextBytes(buf);
MemoryFile memfil = new MemoryFile("testmem", LENGTH);
long start = System.nanoTime();
OutputStream memOs = memfil.getOutputStream();
memOs.write(buf);
Log.e(TAG, "Ashmem writes took " + (System.nanoTime()-start));
memfil.close();
OutputStream fos = new FileOutputStream(new File(this.getFilesDir(), "testfil"));
start = System.nanoTime();
fos.write(buf);
fos.flush();
Log.e(TAG, "File writes took " + (System.nanoTime() - start));
fos.close();
} catch (IOException e) {
Log.e(TAG, "Failed to open ashmem: ", e);
}
Вот некоторые типичные цифры
07-30 20:49:01.742 2994-2994/? E/AshmemTestActivity﹕ Ashmem writes took 214531
07-30 20:49:01.742 2994-2994/? E/AshmemTestActivity﹕ File writes took 68541
Числа не становятся намного лучше, даже когда я включаю время, чтобы закрыть файл. Как записи в память могут быть медленнее, чем файл на диске? Что я делаю неправильно?