Я получил md5 строки в java и php. Кажется, что генерация md5 java занимает много времени, чем генерация md5 php.Почему генерация java md5 медленнее, чем php
Мой тест, test.java
start = System.nanoTime();
String md5 = Utils.md5("sample test string");
System.out.println(md5);
System.out.println((System.nanoTime()-start)/1000/1000);
Код для Utils.md5:
public static String md5(String stringToDigest) throws NoSuchAlgorithmException {
if(stringToDigest == null) {
return "";
}
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] s = md.digest(stringToDigest.getBytes());
HexBinaryAdapter hba = new HexBinaryAdapter();
String md5 = hba.marshal(s);
return md5;
}
показывает мне:
CCEA62E4F30D422B123B9FDFB02CD496
20
test.php
<?php
$start = microtime(true);
echo md5('sample test string');
echo "\n".microtime(true)-$start."\n";
показывает мне:
ccea62e4f30d422b123b9fdfb02cd496
0.00
Так md5 поколение РНР занимает всего около 10-12 мс, а в Java занимает около 18-20 !! Является ли мой тест неправильным? Если это не , то есть ли другой способ получить md5 намного быстрее, чем это?
Редактировать: Для всех людей, жалующихся на x, медленнее, чем у. Я задал этот вопрос, потому что у нас есть приложение, и в java будет изменен основной кусок. Мы должны обслуживать каждый запрос в течение 30 мс. Теперь, если только генерация md5 займет много времени, проект будет отменен. Поэтому я смиренно прошу о помощи. Те, кто хочет помочь, очень уважают их. Те, кто хочет атаковать, пожалуйста, посмотрите на другие вопросы
ли это в 1000 раз, или 10000 или 100000. Может быть, Java имеет высокое время запуска, потому что необходимо загрузить дополнительные библиотеки (под капотом). Или, может быть, это просто, что sysout медленный, удалите его из времени. – Halcyon
-1 для вопроса «почему X быстрее, чем Y». – Kayaman
Вы сравниваете две совершенно разные технологии с совершенно разными бэкендами и стеками программного обеспечения ... также делайте это более одного раза, чтобы получить более значимые результаты. – akluth