Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Профилирование кода / 7 сообщений из 7, страница 1 из 1
08.02.2005, 15:14
    #32906297
Николай_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилирование кода
Написал класс-таймер для измерения продолжительности выполнения функции и прочее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
class Timer {
var $timers =array();
function Timer()
{
}
function timerStart($name = 'default')
         {
         $time_portions = explode(' ',microtime());
         $actual_time = $time_portions[ 1 ].substr($time_portions[ 0 ], 1 );
         $this -> timers['$name'] = $actual_time;
         }
function timerStop($name = 'default')
         {
         $time_portions = explode(' ',microtime());
         $actual_time = $time_portions[ 1 ].substr($time_portions[ 0 ], 1 );
         $elapsed_time = bcsub($actual_time, $this -> timers['$name'], 6 );
         return $elapsed_time;
         }
}
Использую его:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
$tim = new Timer();

$tim -> timerStart('total');

$tim -> timerStart();
if ($localdir = opendir(".")) {
    while (false !== ($files = readdir($localdir))) {
        if ($files != "." && $files != ".." && !is_dir($files)) {
array_push($f, strtolower($files));
        }
    }
    closedir($localdir);
}
print ("time1: ".$tim -> timerStop());

$tim -> timerStart();
$result_tr = array_diff ($f, $contents);
print ("time2: ".$tim -> timerStop());
print ("Total: ".$tim -> timerStop('total')."<br>");

Но вывод получается неправильный...
Код: plaintext
1.
2.
3.
time1:  0 . 453968 
time2:  0 . 009770 
Total:  0 . 009830 

Неправильно считает общее время выполнения сценария.. Почему... Подскажите ошибку... Ведь Total: должен быть 0.463738
...
Рейтинг: 0 / 0
08.02.2005, 16:00
    #32906433
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилирование кода
Вот ведь изврат какой... Зачем здесь bcsub можете сказать? Или просто от балды его поставили, для понтов?
Вообще ваша проблема, похоже, в азах - http://php.net/manual/ru/language.types.string#language.types.string.syntax.single
http://php.net/manual/ru/language.variables
Вообще все ваши "муки" с microtime легко заменяются на одну строчку, в частности,
Код: plaintext
$this->timers[$name] = array_sum(explode(' ',microtime()));
...
Рейтинг: 0 / 0
09.02.2005, 13:09
    #32908023
Николай_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилирование кода
И почему сразу изврат.. :(
И почему сразу понты.. :(
Указали на ошибки, и большое Вам спасибо .. Значит знаете о чём говорите.. Для этого форумы и существуют.. Но зачем вот умничать и показывать что кто-то намного глупее Вас... Очень хорошо, что у Вас есть хорошие и правильные ответы на разные вопросы, есть своё мнение.. Спасибо за участие в ответе на сложные, для кого-то, вопросы.. Но сразу бросаться в драку..
Вот вызову Я Вас на РИНГ люлей навешаю, а потом плюну в лицо и буду всем кричать какой Вы лох и слабак.. понравится.. Думаю нет. Если Я лучше Вас на РИНГЕ, это не значит что Вы не сможете стать лучше чем другие, просто опыта маловато и прочее..
Поэтому видите себя достойно, и не надо уже так пантовать , и извращаться .. Подумаешь bcsub .. Что это Вас так задело...
...
Рейтинг: 0 / 0
09.02.2005, 14:01
    #32908191
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилирование кода
Николай_Подумаешь bcsub .. Что это Вас так задело...Это оно вас должно было задеть - может всё же ответите на вопрос - зачем там bcsub? Если вы чего-то не понимаете - в этом нет ничего страшного, но использовать что-то непонятно для чего - не стоит.
PS: ну дадите люлей - ну и что? Легче станет? Да и желания стать лучше на этом поприще у меня нет :)
...
Рейтинг: 0 / 0
10.02.2005, 23:39
    #32911211
Николай_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилирование кода
bcsub для того чтобы показать числа типа 0.000135. Ведь когда выполняются какие-то функции, время с милисекундах или в десятых. Например у меня работа с большими массивами и обход массива можно осуществить по разному, просто я сравниваю время работы различных функций или классов и смотрю какая быстрее отрабатывает, что и где можно заменить чтоб оптимально и максимально быстро работал код...

PS: Ни кто ни кому люлей давать не собирается... Просто неприятно когда тебя начинают облаивать.. А Ваше мнение и Ваши предложения Я очень уважаю, и благодарю за помощь в решении проблемы... Спасибо.
...
Рейтинг: 0 / 0
11.02.2005, 00:24
    #32911233
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилирование кода
[quot Николай_] bcsub для того чтобы показать числа типа 0.000135.[/quote]В этом нет никакой необходимости. Если речь о знаках после запятой, которых почему-то невидно - number_format или printf . А вообще, можно не заниматься изобретением велосипеда и воспользоваться, к примеру, Котеровским профайлером
...
Рейтинг: 0 / 0
11.02.2005, 15:49
    #32912041
Николай_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилирование кода
*А вообще, можно не заниматься изобретением велосипеда и воспользоваться, к примеру, Котеровским профайлером
Вот спасибочки... такого я не видел. Очень полезную ссылочку дали... Профайлер очень интересный.. много нового увидел...
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Профилирование кода / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]