Я создал 256 МБ ОЗУ с использованием ImDisk и сравнил скорости чтения / записи жесткого диска и оперативного диска с помощью простого программного обеспечения для тестирования CrystalDiskMark . CrystalDiskMark показывает, что RAM-диск в 10 раз быстрее жесткого диска, как и следовало ожидать.
Однако я попытался сохранить данные программно на RAM-диске и HDD, ожидая, что RAM-диск Быстрее, и для обоих времени требуется одинаковое.
Я написал следующий код в Java, создал исполняемый файл JAR и запустил исполняемый файл на жестком диске и RAM-диске. Этот код создает черное изображение размером 16x16, сохраняет 100 различных его копий в формате PNG и печатает в терминале время, необходимое для сохранения каждого файла, среднее значение и общее время.
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
public class SaveImageSpeedTest {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
BufferedImage img = new BufferedImage(16, 16, BufferedImage.TYPE_3BYTE_BGR);
long n = 100;
long total_time = 0;
for(long i=0; i<n; i++) {
try {
long time = System.nanoTime();
ImageIO.write(img, "PNG", new File(i+".png"));
time = System.nanoTime()-time;
total_time += time;
System.out.println((i+1)+"/"+n+" - "+"Time: "+(time/1000000L)+" ms");
} catch (Exception ex) {
Logger.getLogger(SaveImageSpeedTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
long average_time = total_time/n;
System.out.println();
System.out.println("Total time: "+(total_time/1000000L)+" ms");
System.out.println("Average time: "+(average_time/1000000L)+" ms");
}
}
Как это сделать это возможно? Почему не быстрее, если тест показывает, что RAM Disk в 10 раз быстрее? Я также попытался сохранить данные с помощью исполняемого файла C ++, и снова времена были такими же.
Редактировать 1: Изменяя формат RAM Disk с NTFS на FAT, я получаю почти в два раза больше скорости, но это должно быть в 10 раз больше.
Редактировать 2: Я пробовал изображения разных размеров и даже делал случайные изображения (чтобы избежать кэширования данных). Всегда одни и те же результаты: Ram DISK едва ли в два раза быстрее.