Я сравниваю два алгоритма решения проблемы запроса Skyline в файле с двумерными точками.Профилировщик NetBeans, показывающий значительно разные времена выполнения
Я объявляю их:
SkylineAlgorithm bnl = new BNL(); SkylineAlgorithm sfs = new SFS();
Затем вручную измерить их эффективность:
long startTime = System.nanoTime();
List<Point> skylinesBnl = bnl.getSkylinePoints(file);
long endTime = System.nanoTime();
long durationBnl = (endTime - startTime)/1000000;
startTime = System.nanoTime();
List<Point> skylinesSfs = sfs.getSkylinePoints(file);
endTime = System.nanoTime();
long durationSfs = (endTime - startTime)/1000000;
System.out.println("BNL: " + durationBnl + " ms");
System.out.println("SFS: " + durationSfs + " ms");
Например, это будет печатать:
BNL: 4648 ms
SFS: 4946 ms
Тогда я думал использовать что-то еще сложный, как профилировщик NetBeans. Я установил метод профилирования корня getSkylinePoints(file)
(оба алгоритма совместно используют этот метод, хотя шаблон шаблона метода шаблона), а затем в конце строки List<Point> skylinesBnl = bnl.getSkylinePoints(file);
Я установил профилировщик для сохранения результатов и вывода их. То же самое происходит для sfs.
Мои результаты таким образом, эти (открытые изображения в новой вкладке):
BNL:
SFS:
То есть значительно отличается от того, что я получаю в ручном режиме. Любые идеи, что происходит?
Итак, теоретически, поскольку оба алгоритма доступа к одному файлу, разница между ними должна быть одинаковой? С тех пор, как в NetBeans у меня разница в 200 мс, я должен иметь такую же разницу в моем ручном режиме. В моем ручном режиме, хотя есть разница в 300 мс, это просто в пределах погрешности (поскольку я не выполняю несколько итераций и средний из них)? Также возможно ли с профилировщиком NetBeans также подсчитать дисковый ввод-вывод? Может быть, не исключая пакет 'java.io' из фильтра? –
Я ... не понимаю, что вы просите. Возможно, перевод Google может помочь вам. – specializt
Что вы не понимаете, так что я могу объяснить это лучше? Английский - это мой родной язык, и я не могу видеть, где я синтаксически ошибался. –