日付と時刻の関数
| DateList[] | 在の日付と時刻を返す(表示書式は |
| DateList[TimeZone->z] | 時刻帯 z における現在の日付と時刻を返す |
| $TimeZone | 使用しているコンピュータシステムに設定されている時刻帯を参照する |
| In[1]:= |
| Out[1]= |
関数DateListを使うと,オペレーティングシステムの管理する現在の日付と時刻を得ることができる.DateListは夏時間の調整等はオペレーティングシステムにおいてすでに行われていることを前提とする.さらに,オペレーティングシステムレベルで適当な時刻帯が選択済みであることを前提とする.
変数$TimeZoneは,使用中のコンピュータシステムによって仮定される現在の時間帯を返す.時刻帯の値はローカル時からグリニッジ標準時(GMT)を差し引くことで得られる時間差を示す.例えば,米国東部標準時間(EST)ならば,この値は
になる.また,夏時間は時刻帯の値に含まれるので,米国東部夏時間(EDT)なら値は
になる.
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
| AbsoluteTime[] | 1900年1月1日午前0時から現在までに経過した時間 (単位:秒) |
| SessionTime[] | Mathematica の現行セッションにおいて開始時から現在までに経過した時間 (単位:秒) |
| TimeUsed[] | Mathematica の現行セッションで使ったCPU時間(単位:秒) |
| $TimeUnit | オペレーティングシステムの管理する時間更新の最小単位 |
オペレーティングシステムの時間管理は一定間隔で行われている.この時間幅は$TimeUnitを参照することで知ることができる.通常,この値は
秒あるいは
秒程度に設定される.
| Pause[n] | 少なくとも n 秒間一時停止する |
| In[4]:= |
| Out[4]= |
| In[5]:= |
| Out[5]= |
| AbsoluteTime[date] | 日付を絶対時間へ変換 |
| DateList[time] | 絶対時間を日付へ変換 |
| In[6]:= |
| Out[6]= |
| In[7]:= |
| Out[7]= |
| In[8]:= |
| Out[8]= |
DateList["string"]を使うと,日付形式が十分に明確である限り,日付文字列を日付リストに変換することができる.
| In[9]:= |
| Out[9]= |
変換をより制御するために,文字列に現れるデータ要素の順序とタイプを指定することができる.要素には
,
,
,
,
,
,
,
,
,
等の文字列が使える.
| In[10]:= |
| Out[10]= |
日付要素の区切り記号に文字や数字が含まれる場合は,それも日付要素の一部として指定しなければならない.
| In[11]:= |
| Out[11]= |
| DateString[] | 現在のローカル日時を表す文字列 |
| DateString[datespec,elems] | datespec で与えられる日付と時間の要素 elems を返す |
DateStringは日付と時間をきれいに文字列表現するために使われる.正確な出力形式は
,
,
等の日付要素の長いリストから指定することができる.
| In[12]:= |
| Out[12]= |
| In[13]:= |
| Out[13]= |
| DatePattern[elems] | データを指定の要素とマッチさせる文字列パターン |
DatePattern[elems]は文字列マッチ関数の文字列パターンとして使うことができる.日付要素はDateListで使われるのと同じであるが,デフォルトの日付要素の区切り記号は
,
,
,
の記号に限られる.他の区切り記号は日付要素のリストで明示的に与えることができる.
| In[15]:= |
| Out[15]= |
| DateListPlot[list] | 日付座標のあるデータのリストからプロットを生成する |
| DateListPlot[list,datespec] | datespec で指定された日付を持つデータのリストからプロットを生成する |
| DateListLogPlot[list] | 日付座標のあるデータのリストから線形対数プロットを生成する |
| DateListLogPlot[list,datespec] | datespec により指定された日付のリストから線形対数プロットを生成する |
DateListPlotは日付あるいは時間の水平座標を持つデータをプロットするのに使うことができる.日付はDateList,DateString,AbsoluteTimeと同様にリスト,文字列,絶対時間のいずれでもよい.日付指定 datespec は日付を
として与えられるデータに関連付けるために与えることができる.DateListLogPlotではデータを対数垂直スケールでプロットすることができる.
| In[16]:= |
| In[17]:= |
| Out[17]= | ![]() |
| In[18]:= |
| Out[18]= | ![]() |
| In[19]:= |
| Out[19]= | ![]() |
| Timing[expr] | 式 expr を評価し,評価に使ったCPU時間(リスト形式)と評価結果を表示する |
| AbsoluteTiming[expr] | 式 expr を評価し,評価に使った絶対時間を与える |
1つの Mathematica 式の評価にどれだけの時間がかかるかを知りたければ関数Timingを使う.TimingはTimeUsedの増分に相当する.注意してほしいが,Timingは式評価のためにカーネルが使ったCPU時間だけを計測する.出力への書式適用や外部プログラムで使った時間は含まれない.
AbsoluteTimingを用いて絶対的な経過時間を計測することができる.AbsoluteTimingで計測される時間もTimingで計測される時間も評価される式だけではなく,環境条件によっても違ってくるので注意が必要である.
第一に,使用時間は使っているコンピュータの機種やオペレーティングシステムに依存する.CPU処理の速度だけでなく,メモリキャッシュの設定等にも依存する.また,言うまでもないが,計算で使われるカーネルの内部コードに使われているコンパイル時の最適化処理の詳細にも依存する.
さらに,計測対象となる計算が行われているときのセッション状態にも使用時間は依存する.これは,実時間的にカーネルが採用する計算の最適化法の多くは前の計算結果に依存する形で選定されるためである.例えば,計算を進める上で,カーネルは前に取得した結果を保持しておき同じ式が現れたなら不必要には再評価をせず,保持した結果を呼び戻す,というような処理がよく行われる.さらに,組込み関数によっては,最初に呼び出したときに内部に値のテーブルを作成しておき,再度同じ形式で呼出しがあったときにはそのテーブルを参照することで実行に必要な時間を短縮する,というような処理が行われる.このような理由から,同じ式を繰り返し計算させても,セッションの現況が違うため,前とは違った時間が計測されることもしばしばある.
| In[20]:= |
| Out[20]= |
| In[21]:= |
| Out[21]= |
| In[22]:= |
| Out[22]= |
Timingにより計測される時間は,使われるコンピュータによっても違うが,ある最小時間幅($TimeUnit)までの精度でしかないことに注意すること.例えば,0〜$TimeUnitの間の時間ならすべて0として報告されてしまう.
| TimeConstrained[expr,t] | t 秒経っても expr の計算が終了しない場合は計算を中断する |
| TimeConstrained[expr,t,failexpr] | 制限時間を過ぎた場合,戻り値として failexpr を返す |
対話的に計算を進める場合,非常に長い時間がかかるようならば手動で計算を途中で止めたいことがある.TimeConstrainedを使えば,プログラムの中から自動的に計算を強制的に中止することが可能になる.TimeConstrainedで指定した時間内に式の評価が終了しない場合は,評価は中断され,$Aborted(もしくは,特別指定した式)が戻り値として返される.
TimeConstrainedを使うと,最初にある計算法で問題を解かせてみて,時間がかかるようならば,別の方法を試してみることも可能である.ただし,設定した時間が経過しても計算が中断しない場合もあるので注意が必要である.このような状況はカーネルが中止不可の計算部分を処理しているときに起る.さらに,同じTimeConstrainedの指定をしても,違うコンピュータで評価した場合,結果が違ってくることがある.



