[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;

参考

Variables and Mutability - The Rust Programming Language

[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.exemain.pdbといファイルが作られる。
exeファイルは実行ファイルとしてpdbファイルはよくわからん。いろんな情報が入ってるっぽい。

で、実行。

C:\> main.exe
Hello, world!

無事にハローワールド終了。