[Python]cProfile
実行されたPythonプログラム内の各関数で処理にどのくらいの時間がかかっているかがわかる。
# test.py import time def main2(): time.sleep(2) def main(): time.sleep(0.5) main2() if __name__ == "__main__": main()
python -m cProfile test.py # 7 function calls in 2.501 seconds # Ordered by: standard name # ncalls tottime percall cumtime percall filename:lineno(function) # 1 0.000 0.000 2.501 2.501 tera.py:1(<module>) # 1 0.000 0.000 2.000 2.000 tera.py:2(main2) # 1 0.000 0.000 2.501 2.501 tera.py:5(main) # 1 0.000 0.000 2.501 2.501 {built-in method builtins.exec} # 2 2.501 1.250 2.501 1.250 {built-in method time.sleep} # 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
main2()
では2秒、main()
では0.5秒+2秒で2.5秒かかっていることがわかる。
[Rust]変数
変数の宣言
変数の宣言はlet
を使うことで行う。
定数を宣言する場合はconst
を使う。
let a = 0; // 変数 const b = 1 // 定数
letは同じ変数名での再定義が可能だが、constは不可能。
変数はイミュータブル
Rustの変数は基本的に不変であるらしく変数の値を変えることができない。
もし変えようとした場合はエラーが出る。
しかし、変数の宣言時にmut
をつけることで変数の値を変更することが可能となる。
// エラーになる let a = 0; a = 123; // エラーにならない let mut a = 0; // ミュータブルな変数の宣言 a = 123;
参考
[Rust]Cargoを使ったコンパイル&実行
Cargo?
前回はrustc
でコンパイルを行ったが今回はcargo
でコンパイルを行う。
cargoはRustのビルドシステムとパッケージ管理をするためのもので、規模が大きめのプロジェクトに対してはこちらを使うと管理がしやすくなるらしい。
今回もチュートリアルにそってやる。
プロジェクトの作成
とりあえずプロジェクトの作成。
> cargo new hello_cargo
これでhello_cargo
というフォルダと中にいくつかのファイルやフォルダが作成される。
cargoで作成したプロジェクトはデフォルトでgitによってバージョン管理ができるようになっている。
オプションにvcs
をつけることでgit以外にもhg、pijul、fossil、noneを選ぶことができる。noneを選択するとバージョン管理は行われない。
> cargo new --vcs=none hello_cargo続きを読む
[Rust]Rustでハローワールド
ハローワールド
Rustが使えるようになったので公式にあるチュートリアルをやっていく。
最初はお決まりのハローワールド。
main.rc
というファイルを作って以下を入力。
fn main(){ println!("Hello, world!"); }
Rustではインデントはスペース4つで付けるらしい。まぁ多くの言語は4つかな?
main関数は特別な関数で一番最初に実行される関数。
println!
は関数ではなくマクロというものみたい。!
の有無で関数かマクロかが変わる模様。
違いはよくわからんけどそのうち分かるようになるはず。
次にコンパイル。
C:\> rustc main.rs
main.exe
とmain.pdb
といファイルが作られる。
exeファイルは実行ファイルとしてpdbファイルはよくわからん。いろんな情報が入ってるっぽい。
で、実行。
C:\> main.exe Hello, world!
無事にハローワールド終了。