概要 この記事では、プロファイリングツールであるperfまたはdtraceと、可視化ツールであるflamegraph-rsを使ったRustプログラムのパフォーマンス解析の手順をまとめています flamegraphを使うと、プロファイリングツールを使って記録されたスタックトレースの情報をグラフとして可視化することができます flamegraph-rsは特に使いやすく、cargoを通してインストールするだけでflamegraphの生成ができるようになります 環境 対象のOS: Ubuntu22.04, Windows 11 言語: Rust macOSでプロファイリングを行う場合は、SIP(Security Integrity Protection)というセキュリティシステムを無効化する必要があるため、自己責任でお願いします。 プロファイラーの準備 Ubuntuの場合 perf perfはli
κeenです。Rustではじめてアプリケーションを書くときに困りがちなことの1つにグローバルな値を持つにはどうしたらいいか分からないというのがあるようです。 その書き方を何パターンか紹介しできたらなと。 一応この記事には元ネタというかインスパイア元があり、以下のリポジトリも見ながら書かれています。 https://github.com/paulkernfeld/global-data-in-rust let にする 一番よくあるケースだとCLIや起動時に読み込んだ設定ファイルの値をどうするかでしょう。データの性格として起動時に一度だけ生成してあとは(ほとんど)いじらないようなものです。そういうものは main 関数内で let して、あとは借用で持ち回ればよいです。 起動時にファイルかろ設定値を読み込んで動くアプリケーションを雰囲気で書くとこんな感じです。 use std::io; str
新規事業を牽引するRustエンジニアkenkoooo氏、matsu7874氏がestieに参画~Rustに技術投資し、マルチプロダクト戦略を加速~ 不動産データ分析基盤を提供する株式会社estie(読み方:エスティ、本社:東京都港区、代表取締役:平井瑛)へ、『実践Rustプログラミング入門』の著者であるkenkoooo氏、matsu7874氏の2名が社員として参画することとなりました。 estieは業界全体をアップデートするために、商業用不動産業界のプレイヤー(ビルオーナー・資産運用会社・仲介会社・テナント企業など)に向けて、業務に応じた複数のプロダクトにより業界全体のDXを推進しております。 複数プロダクトの開発を高いレベルで高速に行うため、プロダクトごとに少人数で構成されるユニットに大きく権限委譲を行なっており、技術検証を踏まえた開発言語の選択もその1つです。 今回、 estieの新規
みなさん、 Rust 書いてますか?最近は Rust が楽しくてたまりませんが、のんびりやっていたらなんとなく理解するまで 1 年くらいかかってしまいました。 良い言語なので、できればみなさんにも気軽に手を出してもらいたく、 Rust の中で特に難しい概念とされている話「所有権(ownership)」について簡単にまとめることにしました。 おことわり 今回記述する「所有権」は、英語で "ownership" として表現されるものを和訳した単語です。 今回説明している概念は、「所有権」という言葉よりも "ownership" (およびその対訳である「所有」、「持ち主であること」) のほうが的確であると思いますが、このドキュメントでは「所有権」という言葉を使います。 所有権とは 所有権とは、簡単に言えば「値(データ)を持っている」 「その値を解放することに責任を負っているもの」のことを指します
この記事は 2018 年の非同期 Rust の動向調査 の続報です。 TL;DR Rust 1.39.0 以降で async/await 構文が使えるようになりました Future を実行するためのランタイムはいままで tokio だけでしたが、別に async-std というのができました async/await を使うライブラリを選ぶときはこの2つのランタイムのどちらで動くのかを確認しましょう。 特に理由がなければ tokio を使うのがいいでしょう。 2018 年からの差分 一年前から非同期 Rust を追いかけている人向けの情報です。 組織の再編 昨年は async/await を stabilize させるための async-foundations とツールチェーンを調査する web-foundations というグループが発足しました。 しかし諸事情により Async Foun
Rustの特徴のひとつは、所有権(ownership)・移動(move)・借用(borrow)の概念です。これらがコンパイル時に厳格にチェックされることにより、古くから未定義挙動でプログラマを悩ませてきたダングリングポインタなどの問題がなくなり、メモリ安全性がもたらされます。 しかし一方で、自分で多少複雑なデータ構造を定義しようとする場合にはコンパイルを通すだけでもかなりの知識・力量が要求されます。 この(不定期)連載では、 Rustではじめるデータ構造とアルゴリズム と題し、プログラミングコンテストなどでよく見かける基礎的なデータ構造とアルゴリズムを、できるだけシンプルにRustで実装していきます。 &, &mut, Box, Rc, Cell, RefCell などの使い分けや、なぜそれを使う必要があるかの解説を、実例を通して行います。 第1回は、最もシンプルな木構造である 二分木 を
以下補足です。 効率 トレードオフを強調するために、相対的な効率を星の個数で表しています。しかし、効率をことさら気にする必要はありません。他の多くのプログラミング言語では、Rustでいうところの Arc<Mutex<T>> をデフォルトで使っているような状況です。要件にあったものを使うことが大事です。 ライフタイム 「短命」とついているものは基本的に、ある関数のスコープに紐付いた形でしか使えません。特に慣れないうちは、これらの型を構造体に入れて使うのはやめておいたほうが無難でしょう。 例外として、グローバル変数 (static, lazy_static!) は &'static 参照として扱うことができます 共有 「ポインタ」と聞くと、参照先が共有されている様子を思い浮かべる人が多いと思いますが、所有権の概念のあるRustでは必ずしもそのイメージは当てはまりません。 &mut T と Bo
前置き これはRustを学びたいけどどうやって勉強しようかという人向けの記事です。 自分の経験からここ先に読んどきゃよかったとか、ここ読んどけばもっと楽だったとかそんなのをいろいろまとめてあります。もう一度Rustを学び直すならどうするかなー、と考えながら書きました。なお大半が英語の資料です。 英語か・・・と思った方はyukiさんのRust を始めるための資料集もどうぞ。 対象はRuby、Pythonなどの高レベル言語をすでに習得してる人。 前準備 Rustの主な特徴を知っておきましょう。Rustは他の言語にない考え方や特徴が多いので先に知っておくと良いです。とりあえずinto_rust() : screencasts for learning Rustを全部見ましょう 基礎知識の習得 The Bookと呼ばれる公式の入門書があります。まずこれを読みましょう。日本語訳もありますが英語版のほ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く