import java.util.regex.Pattern;
import java.util.HashMap;
class test {
private static Pattern p = Pattern.compile(" ");
private static HashMap<String, Integer> results = new HashMap<String, Integer>();
private static int test(String str) {
int res = 0;
if(results.keySet().contains(str)) {
res = results.get(str);
} else {
res = p.split(str, 0).length;
results.put(str, res);
}
return res;
}
public static void main(String[] args) {
long start = System.currentTimeMillis();
int res = 0;
for(int i = 0;i < 1000000;i++) {
res += test("123 345 asdf 23453 asdfas");
}
System.out.println(res);
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
Celeron 2.5, 1Gb, WinXP Pro
java -server test
5000000
125
Здравствуйте, Obel, Вы писали:
O>O>import java.util.regex.Pattern;
O>import java.util.HashMap;
O>class test {
O> private static Pattern p = Pattern.compile(" ");
O> private static HashMap<String, Integer> results = new HashMap<String, Integer>();
O> private static int test(String str) {
O> int res = 0;
O> if(results.keySet().contains(str)) {
O> res = results.get(str);
O> } else {
O> res = p.split(str, 0).length;
O> results.put(str, res);
O> }
O> return res;
O> }
O> public static void main(String[] args) {
O> long start = System.currentTimeMillis();
O> int res = 0;
O> for(int i = 0;i < 1000000;i++) {
O> res += test("123 345 asdf 23453 asdfas");
O> }
O> System.out.println(res);
O> long end = System.currentTimeMillis();
O> System.out.println(end - start);
O> }
O>}
O>
O>Celeron 2.5, 1Gb, WinXP Pro
O>java -server test
O>5000000
O>125
O>
Ой, не попал по кнопке второй раз, можно перенести в соотв. топик?
Здравствуйте, Obel, Вы писали:
Самые умные могут глянуть
Re[2]: [Benchmark] DMD быстрее всехАвтор: cattus
Дата: 19.09.06
и
Re[4]: [Benchmark] DMD быстрее всехАвтор: FR
Дата: 19.09.06
. Хотя в последнем случае ошибка, правильно выглядит
print 500000
.
А вообще, естественно, 1000000 раз берется только чтобы снизить статистическую погрешность.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Модернизированая версия — дает прирост в два раза
private static int test(String str) {
Integer res = results.get(str);
if(res==null) {
res = new StringTokenizer(str, " ").countTokens();
results.put(str, res);
}
return res;
}
5000000
53
Posted via RSDN NNTP Server 2.0
Здравствуйте, JavaBean, Вы писали:
JB>Модернизированая версия — дает прирост в два раза
JB>JB>private static int test(String str) {
JB> Integer res = results.get(str);
JB> if(res==null) {
JB> res = new StringTokenizer(str, " ").countTokens();
JB> results.put(str, res);
JB> }
JB> return res;
JB> }
JB>
JB>5000000
JB>53
На первой версии у меня результат варьировался от 124 до 132.
На второй версии — 63...71.
Запуск из среды Eclipse 3.1.2. Для компилятора отключены опции внесения отладочной информации.
Система: Xubuntu 6.06, Sun Java2 (java.version=1.5.0_06) процессор AthlonXP 2500+/512кб кэш (1837МГц), память DDR 2x512МБ (двухканалка).
Здравствуйте, Obel, Вы писали:
O> System.out.println(res);
O> long end = System.currentTimeMillis();
Я бы эти две строчки местами поменял, а то ты скорость консоли меряешь.
... << RSDN@Home 1.2.0 alpha rev. 642>>