タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

Cとgolangに関するigrepのブックマーク (2)

  • Goが循環インポートをエラーにする理由

    循環インポートの問題点 現代のプログラミング言語の多くは1パスでプログラムコードを解釈します。インタプリタ型は当然としてC/C++も例外ではありません。つまり「コンパイル・実行」されるまでにソースコードを2度パースすることはありません。 さらにプログラム言語の多くは多重定義はバグの元なのでエラー扱いになります。なので対策の無いヘッダーファイルをincludeした時、再度同じヘッダーファイルが参照された場合に「多重定義」になってしまいます。 C/C++ではそのような「多重定義」を回避するために「インクルードガード」という対策をヘッダーファイルに施します。C/C++ではプリプロセッサという仕掛けに依存していてコンパイラは重複する定義がそれぞれどこのファイルを読み込んだ結果かを判別できません。なので「インクルードガード」という対策がヘッダーに必要なのです。 しかし、「インクルードガード」は方針が

    Goが循環インポートをエラーにする理由
    igrep
    igrep 2023/06/14
    これTypeScriptもデフォルトで禁止して欲しいなぁ。ESModuleの仕様がそうならない限りダメだろうし、breaking changeになるからできて警告程度でしょうけど...
  • Go言語でmmapシステムコールを使ったファイル読み込みの高速化検討とC言語のコンパイラの話 - ryochack.blog

    2013.10.14 追記 @kazuho さんからご指摘いただきました! mmapのほうがreadより速いという迷信について - kazuhoのメモ置き場 - 長いタイトル…。 こないだ書いたgorepっていう検索ツール、もうちょっと速くしたいなと思ってファイル読み込みの部分をmmap()で置き換える検討中。(ちょっぱやのagもmmap()を使っている) mmap()での高速化確認用にCとGoで簡単なコード書いて実験していたら、以下のことがわかった。 ファイル読み込みをmmap()に置き換えると高速化が望めそう Goのコンパイラの最適化はなかなか優秀で、CのGCCビルドよりも速くなることがありそう LLVM-Clangは半端じゃない 処理速度比較の準備 比較用に書いたのは、open()/read()と、open()/mmap()、そしてfopen()/fread()を行うCとGoのコード

    Go言語でmmapシステムコールを使ったファイル読み込みの高速化検討とC言語のコンパイラの話 - ryochack.blog
  • 1