Re[8]: Загрузка процессора 100%
От: Blazkowicz Россия  
Дата: 13.03.07 13:21
Оценка:
Здравствуйте, 245_Monah, Вы писали:

_M>А подскажи пожалуйста, есть ли возможность в Профайлере, посмотреть конкретно что за цикл или что за опирации в цикле загружают процессор, потому что какие методы загружают я вижу но что конкретно в них загружет немогу понять???


Нам предоставляется уникальная возможность угадать что же за профайлер ты используешь? В OptimzeIt точно есть. Напротив каждого метода пишется сколько ms ушло на его выполнение. Что там с другими профайлерами, не скажу, не знаю. Но подобная фича должна быть у всех.
Re[9]: Загрузка процессора 100%
От: 245_Monah  
Дата: 13.03.07 14:10
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, 245_Monah, Вы писали:


B>Нам предоставляется уникальная возможность угадать что же за профайлер ты используешь? В OptimzeIt точно есть. Напротив каждого метода пишется сколько ms ушло на его выполнение. Что там с другими профайлерами, не скажу, не знаю. Но подобная фича должна быть у всех.


Это из серии, ВНИМАНИЕ знатоки, вы играете со мной, угадайте какой у меня профайлер , блин я бы тоже посмеялся, да только непалучается, пользуюсь я баянистым JProfiler ej-Technologies, он тоже мне пишет сколько времени ушло на выполнение метода и т.д. и т.п., так вот, кодер как известно это куча арифметики и соответственно куча циклов, так вот, есть у меня метод, который JProfiler говорит что он нагружает пиз... ну типа времени занимает дофига, а да еще забыл, JProfiler считает общее время с момента старта проги, вот, показываю пример этого метода:

    public long L_mac(long L_var3, int var1, long var2) {
        long L_var_out;
        long L_produit;
        
        L_produit = L_mult(var1,var2);
        L_var_out = L_add(L_var3,L_produit);
        return(L_var_out);
    }


а вот эти два метода которые он использует, ну очень навороченные методы



    public long L_mult(int var1, long var2) {
        long L_var_out;
        
        L_var_out = var1 * var2;
        if (L_var_out != 0x40000000) {
            L_var_out *= 2;
        } else {
            L_var_out = MAX_64;
        }
        
        return(L_var_out);
    }


    public long L_add(long L_var1, long L_var2) {
        long L_var_out;
        
        L_var_out = L_var1 + L_var2;
        
        if (((L_var1 ^ L_var2) & MIN_64) == 0) {
            if (((L_var_out ^ L_var1) & MIN_64)>0) {
                L_var_out = (L_var1 < 0) ? MIN_64 : MAX_64;
                Overflow = true;
            }
        }
        return(L_var_out);
    }


Вобщем я в шоке, еще одна вещь, ставлю отладочные печати по времени, на сам метод Encode в нашем созданном потоке, вот что получается(это фрагментик, что бы лишних вопросов не возникало):

1173793056812
************************
1173793056828
1173793056828
************************
1173793056828
1173793056843
************************
1173793056843
1173793056843
************************
1173793056859
1173793056859
************************
1173793056875
1173793056875
************************
1173793056890


Здесь:
<Время до вызова метода Encode>
************************
<Время после вызова Encode>


Время в милисекундах
Re[10]: Загрузка процессора 100%
От: Blazkowicz Россия  
Дата: 13.03.07 14:38
Оценка:
Здравствуйте, 245_Monah, Вы писали:

Что-то мы не в те дебри углубились. Проблемы в кодеке-то к теме вопроса не относятся. Те методы что ты привел они просто много и часто вызываются наверное.
Мне каежтся что надо попробовать покрутить размер буфера чтения. Так чтобы поток некоторое время ждал поступающей информации. Давая тем самым возможность процессору занятся другими задачами. Но при этом будефер не должен быть на столько большим что кодирование будет долгим. То есть нужно какой-то баланс найти. Вообще как мне кажется кодирование часто довольно трудоёмкая задача и не всегда её можно решить с малой нагрузкой на процессор.
Re[11]: Загрузка процессора 100%
От: 245_Monah  
Дата: 13.03.07 14:47
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, 245_Monah, Вы писали:


B>Что-то мы не в те дебри углубились. Проблемы в кодеке-то к теме вопроса не относятся. Те методы что ты привел они просто много и часто вызываются наверное.

B>Мне каежтся что надо попробовать покрутить размер буфера чтения. Так чтобы поток некоторое время ждал поступающей информации. Давая тем самым возможность процессору занятся другими задачами. Но при этом будефер не должен быть на столько большим что кодирование будет долгим. То есть нужно какой-то баланс найти. Вообще как мне кажется кодирование часто довольно трудоёмкая задача и не всегда её можно решить с малой нагрузкой на процессор.

Лана, все равно огромное спасибо, добавлю только что в линейном потоке без буферизации C код этого же кодека, загружает на 15-20 процентов проц, в этом то и вся проблема, остается искать в Java кодере проблему
Re[11]: Загрузка процессора 100%
От: 245_Monah  
Дата: 13.03.07 14:50
Оценка: :)
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, 245_Monah, Вы писали:


B>Что-то мы не в те дебри углубились. Проблемы в кодеке-то к теме вопроса не относятся. Те методы что ты привел они просто много и часто вызываются наверное.

B>Мне каежтся что надо попробовать покрутить размер буфера чтения. Так чтобы поток некоторое время ждал поступающей информации. Давая тем самым возможность процессору занятся другими задачами. Но при этом будефер не должен быть на столько большим что кодирование будет долгим. То есть нужно какой-то баланс найти. Вообще как мне кажется кодирование часто довольно трудоёмкая задача и не всегда её можно решить с малой нагрузкой на процессор.

Если интересны исходы Кодера могу выслать, так сказать в благодарность
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.