サーモン大好き横山です。 Pythonのコードを書いていて、どの処理で遅延しているか調べるとき、どうしていますか? 今回は関数の行ごとに実行速度を計測出来る line_profiler を紹介します。 準備 今回はMac上でやっていきます。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.10.4 BuildVersion: 14E46 $ python -V Python 2.7.9 環境はPython2.7でvirtualenvの準備をします。 $ mkdir -p /tmp/line_profiler $ cd !:2 cd /tmp/line_profiler $ virtualenv -p /usr/bin/python2.7 venv27 Running virtualenv with interpreter /usr/bi
関数の実行時間の計測がデコレータ足すだけでできそうな気がしたのでやってみたメモ (パッケージとかですでにありそうな気はしますけど) 実装例 地味にf-string使っているので、Python3.6以上がいりますが、若干修正すれば2.7でも動くと思います。 import time def calc_time(message='', parser=None): def _calc_time(func): import functools @functools.wraps(func) def wrapper(*args, **kargs): start = time.time() ret = func(*args, **kargs) if parser: parsed_message = parser(message, *args, **kargs) print( f'end time : {t
Linuxのclock_gettime(2)を見ると実時間、プロセスのcpu時間、スレッド毎のcpu時間を計測できるらしいので使ってみる。includeするのはtime.h。 #include <unistd.h> #include <time.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <assert.h> static inline double timespec2msec(const struct timespec *st) { return (double) st->tv_sec + (double) st->tv_nsec * 1e-9; } static void test_common(const char *name, clockid_t clk_id) { struct t
最近、スクリプト言語の恩恵により、C で書く機会というのは滅多にないのですが、ふと経過時間測定のための bash 用 builtin を書きたいと思い、その基礎として、現在の Linux で利用できるインタフェースについて調べました。 わたしの過去の C プログラミング経験 (某UNIX,10年くらい前) では、経過時間の計測には gettimeofday() を使っていました。たぶんそれしか無かった (?) ので。 しかし、その場合、システム時間が遡ってしまう可能性 (システム管理者が日時設定する時など) を考慮する必要があります。 2011-11-06追記、省みると、その当時,その UNIX でも times() はあったでしょうから、わたしが無知だったということですね。wrap への考慮は必要としても。 調べてみると、現在の Linux であれば、clock_gettime(CLOC
ここではC言語での時間情報の取得方法について説明していく、 時間情報には様々な種類があり、また環境により利用できる関数も変わってくる。 C言語の環境であればどこでも利用できる標準関数から始まり、POSIX環境、Windows環境で利用できるAPIも紹介する。 POSIX環境 引き続き、Linux をはじめとする POSIX 環境で使用できる方法を紹介する。 前回説明したように、 POSIX環境で古くから使われてきたgettimeofday()は非推奨となり、この関数の利用が推奨されている。 プロトタイプ宣言は以下、C標準の関数ではないがヘッダは time.h である。 #include <time.h> struct timespec { time_t tv_sec; /* Seconds. */ long tv_nsec; /* Nanoseconds. */ }; int clock_
実装した処理のパフォーマンスチューニングをする際に時間計測は必須です。 毎回調べているので、書き留めておきます。 #include <iostream> #include <atltime.h> int test(void){ CFileTime cTimeStart, cTimeEnd; CFileTimeSpan cTimeSpan; cTimeStart = CFileTime::GetCurrentTime(); // 現在時刻 //TOOD:ここに計測したい処理を記述 cTimeEnd = CFileTime::GetCurrentTime(); // 現在時刻 cTimeSpan = cTimeEnd - cTimeStart; std::cout<< "処理時間:" << cTimeSpan.GetTimeSpan()/10000 << "[ms]" << std::endl
Abstract CUDAはNVIDIAのGPUのための統合開発環境である. cudaAPIの時間計測にはcudaEventを用いるがcudaEventCreate()やcudaEventSynchronize()、cudaEventElapsedTime()を使ったりしてるうちにProgramが雑多となるので, プログラム簡素化のために時間計測のためのクラスを作成した. Source Code // some headers #include "my_cuda_get_time.cuh" int main(){ cudatimeStamp cutime(5);//最大5回のタイムスタンプ取得可能 //cudatimeStamp cutime; //デフォルト=10回分のタイムスタンプ取得可能 cutime.stamp(); // 0回目 タイムスタンプ // cudaCode 0 cut
はじめに 自分でC/C++, Java/Scala, Python/Ruby/JavaScriptなどのスクリプト言語でそれぞれベンチマークプログラムを書き,その実行速度の結果を議論せよという課題が出たので書いてみる. 書いたプログラム とりあえず全て 100**3 = 1000000回だけ test と出力するようなプログラムにした. #include <iostream> #include <chrono> using namespace std; void benchmark(); int main() { std::chrono::system_clock::time_point start = std::chrono::system_clock::now(); benchmark(); std::chrono::system_clock::time_point end = std
C++11で新しく加わったchronoライブラリを使うと、簡単に経過時間が計測できる。もう環境依存のコードを書かなくてよくなるなら嬉しい。 サンプルコードは以下。シンプルなのですぐわかると思う。 #include <iostream> #include <chrono> int main() { auto start = std::chrono::system_clock::now(); // 重い処理 long long j = 0; for(int i = 1; i <= 100000000; ++i) { j += i; } auto end = std::chrono::system_clock::now(); // 経過時間をミリ秒単位で表示 auto diff = end - start; std::cout << "elapsed time = " << std::chron
<chrono>は、C++11で追加された時間ライブラリである。 単位時間を扱うためのduration、起点からの経過時間を扱うためのtime_point、現在の起点からの経過時間を取得するためのclockからなる。Cの標準ライブラリのtime_tとtime(), clock_gettime()を置き換えることが出来る。日付機能は含まれていない。 duration 時間について考える。一時間は60分である。1分は60秒である。1秒は1000ミリ秒である。 単位の異なる時間の値を相互に変換するのは、簡単な計算だ。 unsigned int min_to_sec( unsigned int min ) { return min * 60 ; } しかし、実引数minに渡される値の単位が分であることを保証する方法はない。間違えたとしても、コンパイルエラーにはならない。 chronoでは、時間単位
(c++11)How to use "chrono(c++11)" for timestamp. Abstract chronoとは, c++11で追加された精度に優れた時間ライブラリであり, gccやclangだけではなくvisual studioでも用いることができる. しかし, 一方でchronoの扱いづらさの指摘もある. 本の虫: C++11の時間ライブラリ: chrono 問題は、これらのコンセプトを学ぶのに、労力がかかるという事だ。私は規格を読めるし、Boostや標準化委員会での議論の経緯も知っているからいいものの、通常のユーザーがプログラミング言語をただ使うためだけに、規格や規格制定時の議論や背景の理解を必要とするべきではない。 また,"gettimeofday"はLinuxのような処理系で用いられてきた.しかし, gettimeofdayで用いられるtimezone構造体は
わたし的棚ぼた一万円選書 急に千葉さんに手渡された封筒、開けてみたら1万円札が1枚。何ごとかと思えば、同期の出張を代わったお礼をもらったらしい。 「葵はワンオペで育児してくれたから」と半分わけてくれました。 泡銭の1万円 これはもう、わたし的1万円選書をしろという思し召しなのでは……
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く