Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> что показывает times 
:(
    Опции темы
Itsys
Дата 26.2.2008, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 2
Всего: 34



Что возвращает функция times в скалярном контексте?

По документации - время с начала работы скрипта в секундах... а получается что-то другое...

При загрузке маленького файла функция times возвращает 45.037, а разница между time на начало выполнения и в конце выполнения скрипта - 1

При загрузке большого файла - 260.968 и 157 соответственно.

Так что же она показывает?
PM MAIL WWW Skype   Вверх
arto
Дата 26.2.2008, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



# perl -le 'print scalar times(); sleep 10; print scalar times()'
0
0
# perl -le 'print scalar times(); foreach (1..100_000_000) { $_*$_; } print scalar times()'
0
32.16
# 

man 2 times
PM MAIL ICQ   Вверх
Itsys
Дата 26.2.2008, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 2
Всего: 34



 smile У меня Windows  smile 

man 2 times не катит

Можешь объяснить словами?

Или ответить как получить время выполнения скрпита, у меня задача: скрипт не должен выпоняться более 10 секунд.
PM MAIL WWW Skype   Вверх
shamber
Дата 27.2.2008, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Itsys, 
Код

   times
 Returns a four-element list giving the user and system times, in
           seconds, for this process and the children of this process.

               ($user,$system,$cuser,$csystem) = times;

           In scalar context, "times" returns $user.


Код

use Time::HiRes qw ( gettimeofday tv_interval);
#начальное время;
 $t0 = [gettimeofday];

superfunc();

#прошло времени;
 $elapsed = tv_interval ( $t0, [gettimeofday]);




Это сообщение отредактировал(а) shamber - 27.2.2008, 10:07
PM MAIL Jabber   Вверх
Itsys
Дата 27.2.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 2
Всего: 34



shamber, 
Цитата(shamber @  27.2.2008,  10:00 Найти цитируемый пост)
   times
 Returns a four-element list giving the user and system times, in
           seconds, for this process and the children of this process.

               ($user,$system,$cuser,$csystem) = times;

           In scalar context, "times" returns $user.

- это я прочитал.

Вопрос в чем - почему если от запуска скрипта до окончания проходит 1, ну максимум 2 секунды, times показывает 45.037?

2. В том случае если мне надо примерно засечь вермя, то не проще ли использовать следующую конструкцию:
Код

$t = time

.....
superfunc();
.....

$elapsed = time-$t;

PM MAIL WWW Skype   Вверх
shamber
Дата 27.2.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Itsys, вы сами решайте что вам проще и как точнее

smile

Это сообщение отредактировал(а) shamber - 27.2.2008, 14:14
PM MAIL Jabber   Вверх
arto
Дата 27.2.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



Цитата(Itsys @  27.2.2008,  13:23 Найти цитируемый пост)
Вопрос в чем - почему если от запуска скрипта до окончания проходит 1, ну максимум 2 секунды, times показывает 45.037?


пример можно?
PM MAIL ICQ   Вверх
Itsys
Дата 27.2.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 2
Всего: 34



Там кода тысячи 2 строк....

но вот выдержка:
Код

    open (LOG, ">$sitepath/Admin/log.txt");
    #Загрузим информацю из файла в БД
    if ($PARAMS{FileFormat} eq "xls"){
        #Загружаем информацию о товарах
        my $oFmtJ = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map => 'CP1251');
        my $excel = Spreadsheet::ParseExcel::Workbook->Parse("$sitepath/Admin/suppliers/Files/$PARAMS{SupplierId}.xls", $oFmtJ);
        my $sheet = $excel->{Worksheet}[0];
        foreach my $rownum ($PARAMS{HeaderLine} .. $sheet->{MaxRow}){
            print LOG $rownum. ": ";
            my @ColumsValues;
            foreach my $cellnum (@Columns){
                my $cell = $sheet->{Cells}[$rownum][$cellnum];
                if ($cell) {
                    my $Val = $oFmtJ->TextFmt($cell->{Val}, $cell->{Code});
                    $Val =~ s/'/`/g;
                    if ($Val){
                        push (@ColumsValues, "'$Val'");
                    }
                    else{
                        push (@ColumsValues, "''");
                    }
                }
                else{
                    push (@ColumsValues, "''");
                }
            }
            $query = "INSERT INTO SuppliersFileRows (SupplierId, GoodType, RowNumber, Col" . (join(", Col" , @Columns)) . ") VALUES
                                                    ($PARAMS{SupplierId}, $PARAMS{GoodType}, $rownum, " . (join(", " , @ColumsValues)) . ")";
            print LOG "$query\n";
            if (!$SQLFastbook->do($query)){
                print "<span id=\"result\">" . $SQLFastbook->errstr . "<br>\n$query</span>\n";
                exit;
            }
            
            $query = "SELECT COUNT(*) AS CNT FROM SuppliersFileRows WHERE SupplierId = $PARAMS{SupplierId} AND GoodType = $PARAMS{GoodType}";
            my $sth = $SQLFastbook->prepare($query);
            $sth->execute || die "~~" . $sth->errstr . "<br>\n" . $query;
            my $count = $sth->fetchrow_hashref;
            print LOG "COUNT(*) = $$count{CNT}\n";
        }
    }
    close (LOG);
    print times;


Добавлено через 1 минуту и 27 секунд
в коде используется около 10 модулей - как стандартных, так и самописных, парсится excel и запихивается все в MS SQL через DBI и драйвер ODBC
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.