ぷろみん

プログラミング的な内容を扱ってます

rust-trace-event-profilerでtokio::runtime

最近のRustではThread制御までライブラリに任せられるようなので、その機能を使って前回作ったTrace Eventを作るやつで挙動を可視化してみました。

let mut rt = tokio::runtime::Builder::new()
    .core_threads(6)
    .threaded_scheduler()
    .build()
    .unwrap();

rt.block_on(async move {
    let events = put_ten_block().await;
    save_file("flow.json", events);
});

f:id:torini:20200704195314p:plain

async fn put_ten_block(item: TimelineItem) -> Vec<TraceEvent>;

async関数を利用するだけでタスクを適切にスレッドに割り振ってくれています。素晴らしい。