Java & cache
От: Obel  
Дата: 25.09.06 10:54
Оценка: :)))
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

Re: Java & cache
От: Obel  
Дата: 25.09.06 10:56
Оценка:
Здравствуйте, 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>


Ой, не попал по кнопке второй раз, можно перенести в соотв. топик?
Re: Java & cache
От: Андрей Хропов Россия  
Дата: 25.09.06 12:36
Оценка: :)
Здравствуйте, 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>>
Re: Java & cache
От: JavaBean Украина  
Дата: 26.09.06 07:33
Оценка:
Модернизированая версия — дает прирост в два раза

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
Re[2]: Java & cache
От: iZEN СССР  
Дата: 27.09.06 15:28
Оценка:
Здравствуйте, 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МБ (двухканалка).
Re: Java & cache
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.10.06 14:20
Оценка: +2
Здравствуйте, Obel, Вы писали:

O> System.out.println(res);


O> long end = System.currentTimeMillis();


Я бы эти две строчки местами поменял, а то ты скорость консоли меряешь.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[2]: Java & cache
От: Obel  
Дата: 03.10.06 06:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Obel, Вы писали:


O>> System.out.println(res);


O>> long end = System.currentTimeMillis();


AVK>Я бы эти две строчки местами поменял, а то ты скорость консоли меряешь.


Нуу, формально я меряю скорость выполнения задачи, делающей сплит и печатающей результаты, разве нет?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.