Мы немного веселимся здесь на работе. Все началось с одного из парней, создавших Hackintosh, и нам было интересно, было ли это быстрее, чем Windows Box (почти) тех же характеристик, что и у нас. Поэтому мы решили написать небольшой тест для этого. Просто простой калькулятор чисел. Он написан на Java и сообщает нам время, необходимое для вычисления первых n чисел.
Оптимизированная версия ниже - теперь занимает ~ 6.6 сек.
public class Primes {
public static void main(String[] args) {
int topPrime = 150000;
int current = 2;
int count = 0;
int lastPrime = 2;
long start = System.currentTimeMillis();
while (count < topPrime) {
boolean prime = true;
int top = (int)Math.sqrt(current) + 1;
for (int i = 2; i < top; i++) {
if (current % i == 0) {
prime = false;
break;
}
}
if (prime) {
count++;
lastPrime = current;
}
if (current == 2) {
current++;
} else {
current = current + 2;
}
}
System.out.println("Last prime = " + lastPrime);
System.out.println("Total time = " + (double)(System.currentTimeMillis() - start) / 1000);
}
}
Мы в значительной степени потеряли сюжет всей игры Hackintosh и PC и просто немного поработали с ее оптимизацией. Первая попытка без оптимизации (приведенный выше код имеет пару) пробежал 52,6 мин, чтобы найти первые 150000 простых чисел. Эта оптимизация работает около 47,2 млн.
Если вы хотите опубликовать свои результаты и затем добавить их.
Спецификации для ПК, на котором я запускаю его, - это Pentium D 2.8GHz, 2 ГБ оперативной памяти, работает Ubuntu 8.04.
Наилучшая оптимизация до сих пор была квадратным корнем тока, впервые упомянутым Джейсоном З.