The world wastes a minimum of $100M annually due to inefficient string operations. A typical codebase processes strings character by character, resulting in too many branches and data-dependencies, neglecting 90% of modern CPU's potential. LibC is different. It attempts to leverage SIMD instructions to boost some operations, and is often used by higher-level languages, runtimes, and databases. But
リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit
関連キーワード Google | プログラミング 広く使われているプログラミング言語「C++」。その後継としてGoogleが開発しているオープンソースプログラミング言語が「Carbon」だ。本連載は、ソースコード品質管理ベンダーSonarSourceで開発者を支援する立場にあるフィル・ナッシュ氏が、Carbonについて英Computer Weeklyに寄稿したものだ。 Rustと「Go」の根本的な違い 世間の見方とは異なり、CarbonはC++に取って代わるものではない。同社はむしろ、後継のプログラミング言語としてCarbonを設計している。同じように聞こえると感じる読者もいるだろう。重要な違いは、GoogleがCarbonとC++を 一緒に使うことを想定している 点だ。 併せて読みたいお薦め記事 Carbonとは何か Googleのプログラミング言語「Carbon」がC++の後継になれな
こんにちは。ホビー型システミストの岡本です。 最近 C++ の習得をしていて、なんとなく多相(polymorphism)の視点からいくつかのプログラミング言語をまとめてみようという気になったので書いてみます。 部分型多相(subtype polymorphism) クラスベースオブジェクト指向言語でよく使うのは部分型多相ですかね。 Java や C#・C++ にある、名称的部分型多相(nominal subtype polymorphism)はこんな感じ。次の例は Java です。 class A {} class B extends A {} public class Main { public static void main(string[] args) { A foo = new B(); } } 変数 foo は A 型だけど、型(クラス)B は A の部分型(サブクラス・派生ク
『ハンズオンWebAssembly ―EmscriptenとC++を使って学ぶWebAssemblyアプリケーションの開発方法』 Gerard Gallant 著、北原 憲、洲崎 俊、西谷 完太、磯野 亘平、米内 貴志 訳 2022年10月12日発売予定 512ページ(予定) ISBN978-4-8144-0010-2 定価4,180円(税込) WebAssemblyはWebブラウザ上で効率的かつ安全にコードを実行するために開発された技術です。様々なプラットフォームでの実行や、C++やRustなどのプログラミング言語で開発が可能です。本書はWebAssemblyの技術的な原理、動作、どのようなことが可能なのかを基礎からしっかり学ぶことができ、かつ実践的な開発テクニックにまで踏み込んだ開発者向けの解説書です。プログラミング言語は主にC++を取り扱います。簡単な例から解説をはじめ、動的リンクや
14 March 2023: Cheerp 3.0 released and relicensed to Apache 2.0 licence! Release notes here. What is Cheerp? Cheerp is an enterprise-grade C/C++ compiler for the web that can compile C/C++ into WebAssembly and JavaScript. It is open source, liberally licensed (LLVM licence) and is actively developed by Leaning Technologies.
Index A tiny ABI An ABI to appease the linker Catching what you throw Magic around __cxa_begin_catch and __cxa_end_catch Gcc_except_table and the personality function A nice personality Two-phase handling Catching our first exception _Unwind_ and call frame info Reading a CFI table And suddenly, reflexion in C++ Setting the context for a landing pad Multiple landing pads & the teachings of the gur
となります。では、C++はどのように例外を実現しているのでしょうか。 例外、といっても実はいくつかの種類があります。Itanium ABIが定義した方法や、Sj/Ljと呼ばれる例外などです。また、OSなどの環境によっても異なってきます。 ここでは、Linux上のgccで使われている例外について解説します。環境はWindowsのWSL1上で、Linux環境は次の通りです。 $ gcc qiita_exception_workspace.cpp /tmp/cci042nX.o: In function `main': qiita_exception_workspace.cpp:(.text+0x19): undefined reference to `__cxa_allocate_exception' qiita_exception_workspace.cpp:(.text+0x2b): un
MPFR Links Internal links: Latest release: download – documentation – bugs – changes. Source code: information to use the development repository. Sample: to start with the MPFR library. FAQ: frequently asked questions. Credit: involved projects and developers. History: links to all MPFR releases and past events. Algorithms: documents describing algorithms used in MPFR. MPFR in the world: publicati
はじめに C++ って他の言語に比べると勉強しづらくないですか? 書籍や学習サイトの内容が古い、または少ないんですよね。ただでさえ言語仕様が複雑なのに、それを手助けする情報も少ないと初学者には辛いんじゃないかと思います。というか僕がそうでした。 そんなわけで、もう少し今風な学習サイトを作ろうと思って作成しました。 ゼロから学ぶ C++ ちゃんとスマホでも読めるようになっています。 C++11 をベースに作っているので、このサイトももはや古い方に入るかも知れませんが、C++20 が浸透してきたらアップデートしようと思います。 よかったらご活用下さい。 ゼロから学ぶ Python(姉妹サイト) 『ゼロから学ぶ Python』というサイトも作成しています。あわせてご活用下さい。 さいごに 上記のサイトはどちらも GitHub でソースコードを管理しています。 スターを付けてもらうと励みになります
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く