Skip to content

Latest commit

 

History

History
667 lines (455 loc) · 21.2 KB

File metadata and controls

667 lines (455 loc) · 21.2 KB

NAME

Time::HiRes - 蕭�膕上墾���alarm, sleep, gettimeofday, ��ゃ�潟�帥�若����˨�祉�帥�ゃ����

SYNOPSIS

use Time::HiRes qw( usleep ualarm gettimeofday tv_interval );

usleep ($microseconds);

ualarm ($microseconds);
ualarm ($microseconds, $interval_microseconds);

$t0 = [gettimeofday];
($seconds, $microseconds) = gettimeofday;

$elapsed = tv_interval ( $t0, [$seconds, $microseconds]);
$elapsed = tv_interval ( $t0, [gettimeofday]);
$elapsed = tv_interval ( $t0 );

use Time::HiRes qw ( time alarm sleep );

$now_fractions = time;
sleep ($floating_seconds);
alarm ($floating_seconds);
alarm ($floating_seconds, $floating_interval);

use Time::HiRes qw( setitimer getitimer
                      ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF );

setitimer ($which, $floating_seconds, $floating_interval );
getitimer ($which);

DESCRIPTION

Time::HiRes ��≪�吾�ャ�若�˨��usleep,ualarm, gettimeofday, ��������� setitimer/getitimer ��激�鴻�������潟�若�����荐���������������育��膕上墾��勖����祉� ��帥�ゃ����若�吾�勉�吾��Perl��ゃ�潟�帥�若����с�若�鴻��絎�茖������障����� 篏帥����鴻�˨�ゃ����⓾�壚��荐����"篏睡��箴�"��祉�壔�激�с�潟�������鴻����祉�鴻�壔�ŝ�����������荀с�����������鐚� ��冴�˨�ŝ�c�⓾�����nanosleep ������������ usleep, ualarm, gettimeofday, ��������� setitimer/getitimer��˨�ゃ����⓾�壔�������ŝ����勉�激�鴻�������勉����㏍�ャ�<�潟����� ���荀с��������������

�����ŝ����勉�激�鴻��������gettimeofday()��������勉�������ャ�㋘�若�激�с�潟����ŝ�������違�� gettimeofday()���綣����1��ゃ�勐就��с��tv_interval()��壚戎�����障�������� �����ŝ����勉�激�鴻��������nanosleep(), usleep(), ��������� select(),��勐����⓾�� ��ŝ�������違��Time::HiRes::usleep() ��� Time::HiRes::sleep()��壚戎�����障�������� �����ŝ����勉�激�鴻��������ualarm() and setitimer() ��勌検��鴻����ŝ������� Time::HiRes::ualarm() ��� Time::HiRes::alarm()���篏帥����障��������

use��鴻����若����<�潟����勉�ŝ����у��茖���������⓾����ŝ����∽�違����ゃ�潟����若����������������������違�� ��潟�潟����ゃ��������紊掩�������障�����

�����ŝ����卡��腱�篁ヤ�����sleep���usleep()��с�壔�ŝ��nanosleep()��у��茖���������⓾�������違�� nanosleep()��壔�激�違����˨��篏帥����ŝ����勉�с��鐚�腱�篁ヤ�����sleep�����激�違����˨��羞桁����������� �����������с����障����������������������夌Щ罎���с��罨������障�������������⓾�障�����������nanosleep��� �����c�⓾�������勉�����&Time::HiRes::d_nanosleep��勐�ゃ��true��с�������������с���� �����ŝ�������違�ŝ����障����������������������号����ŝ����������ŝ��������������nanosleep() C API �����㏍�ャ�<�潟�����茯㏍�障�ŝ�������違�ŝ����障��������鐚�nanosleep()�����若�喝�冴����ャ� ��ゃ�潟�帥�若����с�若�鴻�壔�������障�����;���������絨������ɱ�ゃ�у�����Time::HiRes::sleep()��� Time::HiRes::usleep()�����若�吟�������с�����)

sleep�����激�違����˨��羞桁��������������������nanosleep���篏帥����ŝ�������違�� Perl���������腱���勖③腆冴�����荀�羆����������篁�篋���勉�������˩戎�����鴻�������若�˨�с�������� ��������������������������障�����

�����勉�≪�吾�ャ�若�˨�����篁ヤ����勰�∽�違����ゃ�潟����若�������������������с����障����� ��������í�˨����с����壔�鴻����若�������������∽�違�壔�������障��������

gettimeofday ()

��������潟�潟����㏍�鴻����с�壔����������壔�������勛����������ゃ�壔�㊦��2��ゃ�勤��膣���勰��������菴������障����� ��鴻�˨�í�若�祉�潟�潟����㏍�鴻����с�壔��Time::HiRes::time()��勉�������̥����� 羌勐��絨���亥�号�違�ц�������障��鐚�筝�荐������э�����

usleep ( $useconds )

���絎���������������ゃ�壔�㊦����違��sleep�����障�����絎�������sleep�����������ゃ�壔�㊦����違�� 菴������障�����usleep��激�鴻�������祉�潟�若�˨����奝��������1腱�篁ヤ��sleep�����������������с����障����� 筝�荐����Time::HiRes::sleep()������荀с��������������

ualarm ( $useconds [, $interval_useconds ] )

ualarm��潟�若�˨����肴�������障��;$interval_useconds��壔�ŝ����激�с�潟�с�� ���絎���������ŝ��������0��˨�ŝ����������勛��������alarm��勉�������ɱ�������������障�����

tv_interval

tv_interval ( $ref_to_gettimeofday [, $ref_to_later_gettimeofday] )

2��ゃ�勖����祉�勖��������羌勐��絨���亥�鴻�勛����違��菴������障�����2��ゃ�勖����祉��gettimeofday()�� 菴���������������勉�с�ŝ�������違�ŝ����障��������2��ɾ�勉�勐����違�������ャ�������������� �憜����勖����祉��篏帥�������障�����

time ()

羌勐��絨���亥�鴻�с����������壔�������勛����違��菴������障����������勰�∽�違�壔�ゃ�潟����若�������� �����������с����障����������勛��������Perl��勉�潟�≪�ф��箴����������綏勉��莨若�水�����time��� 臀勉�������������������˨�ŝ����障��;筝�荐����"篏睡��箴�"������荀с��������������

羈���� 1: �����勰��膕上墾���time��壔�������ŝ����勉����í����������若�������潟�≪��time()��� 緇������������˨��������蕭�膕上墾��勖����祉��������筝������������������������⓾��������筝���ʃ�����腱��� ��������勉�������������˨����c�⓾����潟�≪��time()���������紊������c��������絨���ŝ����c����� �����������������������障��������������綵���吟�������勐勲���0.5腱����莇���������������壔����������障��������

羈���� 2: 2001綛�9���9��� ��ユ����� GMT��勐����� 1:46:40��������� �����������壔��������time()腱���壔��1_000_000_000���莇������⓾����障����� Perl��с�勉�������í�˨����勖貴���絨���亥�鴻�勉����í�若����������������������壔�������勛����違�� ��������障�c�〠����������ŝ����違��篏������冴����障��:Time::HiRes::time()��勐�ゃ�� ��阪��������������篆�荐若��������6罅�(�����ゃ�壔�㊦��)��с�壔�ŝ��5罅���勖�医��������緇������������� ��с����障�����������綽������ŝ����������ゃ�壔�㊦����壠����������障��(�����<����������ŝ���� �����í����������若�������������勉�������ɾ��綺⓾����泣����若�������⓾����������勉����喝�������⓾����障��)��� 篏����莎激����⓾�������������������違��Perl��勖貴���絨���亥�鴻�勉�������í�˨����勉����í�若����������с� 15罅���勖�医����������阪�������障�������������勐�翫�����絨���亥�鴻�勐�����0罅���勖�医�������������� �����勐��������5罅���������障����������ゃ�壔�㊦�����荀������������˨��"%.6f"���printf/sprintf�� ��í�<��������篏帥����������ŝ�鴻����祉�潟�潟����㏍�鴻�����gettimeofday()���篏帥�������������с����障����� �����勐�翫����˨�壔��腱���������ゃ�壔�㊦�����2��ゃ����ャ�勐�ゃ�������☖�������⓾�������障�����

sleep ( $floating_seconds )

���絎����������腱���違��sleep�����障�����絎�������sleep������腱���違��(羌勐��絨���亥�鴻�勐�ゃ��) 菴������障����������勰�∽�違�壔�ゃ�潟����若�������� �����������с����障����������勛��������Perl��勉�潟�≪�ф��箴����������綏勉��莨若�水�����sleep��� 臀勉�������������������˨�ŝ����障��;筝�荐����"篏睡��箴�"������荀с��������������

alarm ( $floating_seconds [, $interval_floating_seconds ] )

���絎�������腱���医�����SIGALRM��激�違����˨�������������障�����ualarm()���篏帥�c� 絎�茖���������⓾����障�����$interval_floating_seconds綣���違� ��ŝ����激�с�潟�ф��絎���������ŝ�����0��˨�ŝ����障����������勛��������alarm()��勉������� ��������˨�ŝ����障����������勰�∽�違�壔�ゃ�潟����若�������� �����������с����障����������勛��������Perl��勉�潟�≪�ф��箴����������綏勉��莨若�水�����alarm��� 臀勉�������������������˨�ŝ����障��;筝�荐����"篏睡��箴�"������荀с��������������

羈���� 1: ��ŝ����㋘�若����c�潟�違�祉�激�鴻��������Perl��勉�ŝ�ŝ�若�鴻� 腟���水����������˨����c�⓾��SIGALRM���筝㊥�㏍����������勉�с�壔�ŝ�����select()��� ������紮���������������������������障��������������alarm()��勐�����select()��� ������������alarm()������絎���������������������˨�с�壔�ŝ����� alarm()���select()������絎������������������勐��荐������������������� ��������ŝ����������������潟����障�����

setitimer ( $which, $floating_seconds [, $interval_floating_seconds ] )

��ゃ�潟�帥�若����˨�祉�帥�ゃ����若�����紮���������障��;筝�絎���勖�����緇������激�違����˨��絮������� ��������������с�激�違����˨��絮����膓���������������������障����������帥�ゃ����若��罩≪�������˨�壔�� $floating_seconds���0��˨����⓾��������������$interval_floating_seconds�� 0������絎�������������(�����������壩��絎���������ŝ�����)�����帥�ゃ����若�壩❶��˨�激�違����˨��絮������� 緇����罩≪����������障�����

��ゃ�潟�帥�若����˨�祉�帥�ゃ����若��篏帥�����������alarm(), sleep()���usleep()�� �����c�☁�ʒ�������������������������障��������罔�羣������˨�壔����娯��篏������夌�劫����������⓾����障�������� ��ゃ�障�����篏����莎激�������������������障�����:��������������������障�������������������с�ŝ����������������障��������

��鴻�˨�í�若�祉�潟�潟����㏍�鴻����с�壔�帥�ゃ����若�с�勖��������������菴���������障�����

��ŝ�鴻����祉�潟�潟����㏍�鴻����с�壔��罧���������������ゃ�潟�帥�若����˨��菴���������障�����

���絽�3��ゃ�����������4��ゃ�勉�ゃ�潟�帥�若����˨�祉�帥�ゃ����若����ñ���櫝�純�с��:$which�� ITIMER_REAL, ITIMER_VIRTUAL, ITIMER_PROF, ������������ ITIMER_REALPROF�� �����������������с����障�������í�������ñ����с����������壚札筝���勉�������˩��絖������障��:��㋚�����UNIX �����í����������若����奝��絽御��������3��ゃ�������c�⓾����障��������������(箴�������)Win32���Cygwin�� ITIMER_REAL�����������c�⓾����障��������Solaris���ITIMER_REALPROF��������c�⓾�������������с�� (��������壔����˨����鴻�㋘�������ŝ����㏍�違�í����������㏍����<�ゃ�˨�������������˩戎��������障��)���

ITIMER_REAL��夌��������������alarm()��勉�������ɱ�������˨����障����� ���������絎�������;��ゃ�障��紕����荐���勖�������ц����������障����� ��帥�ゃ����若����������������˨�ŝ�����SIGALRM��������������障�����

ITIMER_VIRTUAL���(�����㏍�祉��)篁勖�潟�勖�������ф��������荐������障��鐚� ��ゃ�障�������㏍�祉�鴻��絎�茵������⓾�������������������с����������˨�������㏍�祉�����/��⓾�若��/CPU �� ��激�鴻�������с�壔�������壠�������������������壠�����荐���勖����������壠�������c��������絨���ŝ����c����������障����� (�����勖����������⓾�若�吟�惹�����(user time)��������若�違����障�������帥�ゃ����若�� ��������������˨�ŝ�����SIGVTALRM��������������障�����

ITIMER_PROF ��壔����㏍�祉�剛皿��恰��������������������(I/O��勉��������)�����㏍�祉�鴻�勐������� ��ŝ����㋘�若����c�潟�違�祉�激�鴻��������莎違�c�⓾��������������荐������障����� (�����勖����������激�鴻�����������(system time)��������若�違����障�����) ��帥�ゃ����若����������������˨�ŝ��������SIGPROF��������������障�����SIGPROF�� ��激�鴻�������祉�潟�若�˨��筝㊥�㏍�������������������с����障�����

�����˨����鴻�㋘�������ŝ����㏍�違�í����с�勉�ゃ�潟�帥�若����˨�祉�帥�ゃ����若�勖����潟� ��激�鴻�������˨�������障�������������⓾�激�鴻�������˨����c�⓾�壔����������˩���� ��ゃ�潟�帥�若����˨�祉�帥�ゃ����若����泣����若�������⓾�������������������障�������� �����ŝ�����setitimer()��勉����㏍�ャ�<�潟��������荀с��������������

getitimer ( $which )

$which��ф��絎������������ゃ�潟�帥�若����˨�祉�帥�ゃ����若�с�勖��������������菴������障�����

��鴻�˨�í�若�祉�潟�潟����㏍�鴻����с�壔��罧�������������菴���������障�����

��ŝ�鴻����祉�潟�潟����㏍�鴻����с�壩����������������ゃ�潟�帥�若����˨�勌検��鴻��菴���������障����� ��ゃ�潟�帥�若����˨�壠幻��˨��setitimer()���篏帥�c�������������ャ����������勉�с�����

EXAMPLES

use Time::HiRes qw(usleep ualarm gettimeofday tv_interval);

$microseconds = 750_000;
usleep $microseconds;
# 2.5腱�緇���������勐�����0.1茵���������˨�激�違����˨�祉�≪�í�若��
ualarm 2_500_000, 100_000;    
# �����������壔�������勛����������ゃ�壔�㊦��������緇�
($s, $usec) = gettimeofday;
# 腟������������勤��羝
# (2��ゃ��gettimeofday��勖�祉����ゃ��綣������������˨����c�⓾���櫝�純�с��)
$t0 = [gettimeofday];
# ��������т�������☎����勐�冴�障�����絎�茵�
$t1 = [gettimeofday];
# �����������☎����勐�冴�障�����絎�茵�
$t0_t1 = tv_interval $t0, $t1;

$elapsed = tv_interval ($t0, [gettimeofday]);
$elapsed = tv_interval ($t0);   # equivalent code
#
# time, alarm ��������� sleep���羌勐��絨���亥�鴻�с�勛��������������
# �����勉�х舟���������
#
use Time::HiRes;
$now_fractions = Time::HiRes::time;
Time::HiRes::sleep (2.5);
Time::HiRes::alarm (10.6666666);

use Time::HiRes qw ( time alarm sleep );
$now_fractions = time;
sleep (2.5);
alarm (10.6666666);
# �����㏍�祉�剛皿��恰�������ф��������10腱���������勐�����2.5腱���������
# �����c�⓾�������ゃ�潟�帥�若����˨�帥�ゃ����若��茖����������

use Time::HiRes qw ( setitimer ITIMER_VIRTUAL time );

$SIG{VTALRM} = sub { print time, "\n" };
setitimer(ITIMER_VIRTUAL, 10, 2.5);

C API

��≦宍�����吾�鋋冴�˨�壚��荐����perl API�����������⓾��C API�����ñ����������������� ��ñ����с����障�����篁ヤ�����C��勰�∽�違��modglobal��������激�ャ�у�ñ����������������� ��с����障��:

��∽�医��           C�����㏍����帥�ゃ��
---------------  ----------------------
Time::NVtime     double (*)()
Time::U2time     void (*)(UV ret[2])

��∽�違�壚検��鴻�����(gettimeofday��勉��������)�����������宴��菴������障����� ��������������勤;�憗����������障�����NVtime ��� U2time�����������������壚源�� ��ŝ����㋘�若����c�潟�違�祉�激�鴻�������˩��絖������⓾����ŝ����������̹�御����������⓾����障����� (VMS��勉�������˨�������ゃ����勉����í����������若����с�壔����勉�������ャ�㋘�若�激�с�潟�� ��������⓾����障��������gettimeofday���Unix筝㊤�������с�����)

C������NVtime���篏帥�c����������勌�����篁ヤ����̥ず�����障��:

double (*myNVtime)();
SV **svp = hv_fetch(PL_modglobal, "Time::NVtime", 12, 0);
if (!svp)         croak("Time::HiRes is required");
if (!SvIOK(*svp)) croak("Time::NVtime isn't a function pointer");
myNVtime = INT2PTR(double(*)(), SvIV(*svp));
printf("The current time is: %f\n", (*myNVtime)());

DIAGNOSTICS

negative time not invented yet

綣���違�������⓾����ゃ����鴻�勖����祉��篏帥�������������障��������

internal error: useconds < 0 (unsigned ... signed ...)

篏������蚊�í�����絎潟����������障����� -- �����ゃ����鴻�˨�ŝ����壔����勉�ŝ�������ゃ�壔�㊦����違� �����ゃ����鴻�˨�ŝ�c�⓾����障����障����������潟�潟����ゃ�í��紕������⓾�������勉�����鐚�

CAVEATS

��潟�≪��time()��������������⓾����勉�с�壔�ŝ�����������篋���ャ�������������������ŝ���������� 羈���������⓾����������������������壔�潟�≪��time()���gettimeofday()��� Time::HiRes::time()���������1腱������������������怨����������������������ŝ����������� ��������������潟����障�����

AUTHORS

D. Wegscheid <wegscd@whirlpool.com> R. Schertler <roderick@argon.org> J. Hietaniemi <jhi@iki.fi> G. Aas <gisle@aas.no>

COPYRIGHT AND LICENSE

Copyright (c) 1996-2002 Douglas E. Wegscheid. All rights reserved.

Copyright (c) 2002,2003,2004 Jarkko Hietaniemi. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

膺肢┳���

綏����絖����(GCD00051@nifty.ne.jp)