蛇使いな彼女BLOG
【第37回】 雑談編②ー処理速度を調べる
2021.06.18
こんにちは、今日は新しくなったデスクトップPCがどのくらい早いのか検証してみようと思います。
以前使っていた古いデスクトップは手元にないので、普段持ち歩いているノートPCと比較をしてみます。
「そんなのデスクトップが速いに決まってるじゃん!」ですが、そこは勘弁ですm(_ _)m
[検証方法]
処理速度を調べる方法については、timeモジュールを利用したシンプルで一般的なやり方で行います。
time.time()
これによって得られる値はUNIX(ユニックス)エポックという形式で、協定世界時(UTC:Universal Time,Coordinated)の1970年1月1日午前0時0分0秒を基準としたときの経過秒数で表されます。
処理速度の算出方法は、
(処理を終えたときの時刻)-(処理を開始する時の時刻)=処理に掛かった時間(処理速度)
という考え方です。
過去のデータ解析に関する記事にもあったかもしれませんが、弊社の水質生データのファイル名は、そのデータの観測時刻となっていて、形式はUTCです。
これを日本標準時(JST:Japan Standard Time)に直す場合はUTCの時刻から9時間進める必要があるので、普段解析する際には+9時間の処理を行っています。
何だかややこしい定義ですが、コードは至ってシンプルなので実際にプログラムを見ていきましょう☆
[コード全文]
まず前半はローカル環境から読み込むファイルを指定しています。
今回はある地点の1年分の水質データ、全部で17095個のファイルを読み込みます。
変数startは処理開始時の時刻(秒数)で、 変数endは処理後の時刻(秒数)から開始時の時刻を差し引いた時刻(秒数)です。
デスクトップでこれを実行すると…
↓
30秒で終わりました!
一方ノートパソコンはというと…
およそ230秒掛かりました。
処理に関しては、ただの一行しか書いていない状態で、デスクトップの方がノートの約7.6倍速いという事なので、実際の作業では大きく処理スピードが変わってきますね(^_^)
…ちなみにprint文の表記についてですが、’{:.3f}’.format(end) と指示することによって表示する桁数を小数点以下3桁までにフォーマットしています。
この方が扱いやすいですからね(笑)
余談になりますが、文字列で表す場合は上のように表示桁数を指定できる反面、文字列→float(浮動小数点数)で桁数を指定して表示したい場合、ちょっとした問題があることに気づきました。
文字列:‘30.0150’ → float:30.015 (30.0150にならない)
このように右端の数字が0の場合、勝手に略されてしまうんですよね。
6桁で表したいところ、返ってくるのは5桁です。
最近、位置情報を扱う事があったのですが、文字列→floatに変換した際、入力桁数が変わるとエラーを吐くことが分かったので、追々これをどうにかできないかな~なんて思ったりしてます。
最後話がズレましたが、今回はここまでです。