並び順

ブックマーク数

期間指定

  • から
  • まで

161 - 200 件 / 665件

新着順 人気順

cppの検索結果161 - 200 件 / 665件

  • 【C】srand(time(NULL))をしても同じ乱数が生成される

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

      【C】srand(time(NULL))をしても同じ乱数が生成される
    • Ladybird

      Welcome to Ladybird, a truly independent web browser. We are building a brand-new browser from scratch, backed by a non-profit. Get Involved About Ladybird Ladybird is a brand-new browser & web engine. Driven by a web standards first approach, Ladybird aims to render the modern web with good performance, stability and security. From its humble beginnings as an HTML viewer for the SerenityOS hobby

        Ladybird
      • C++23発表:新しいC++標準の登場

        8月6日、C++23はC++20の次の標準として発表されました。 C++23はC++の進化の一環として重要な役割を果たし、C++の機能を改善することを目的としています。 C++23はC++98やC++03ほどの大きな変更はなく、C++17の伝統に則ったものです。 本日、C++コミュニティが待望の次期C++標準、「C++23」を発表した。C++は長い歴史を誇るプログラミング言語であり、C++23はその進化の中でも特に重要な節目となる。C++23はC++98やC++11、C++20ほどの大規模な変更は見られないが、C++17の伝統を継承している。 C++の歴史的進化 C++は1980年代末にBjarne Stroustrup氏とMargaret A. Ellis氏によって執筆された「Annotated C++ Reference Manual (ARM)」によって誕生した。この書籍は当時多数存

          C++23発表:新しいC++標準の登場
        • 米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨

          これらの言語の中では、Javaが企業向けアプリや「Android」アプリの開発で最も幅広く使用されている一方、Swiftは「iOS」アプリの開発環境に取り込まれている点もあって人気プログラミング言語の上位に入っている。また、RustはシステムプログラミングにおいてCやC++の代替として注目を集めつつある。 同ガイダンスには「可能であれば、メモリー保護機能が言語自体にほとんど、またはまったく内在していないCやC++といった言語から、メモリー安全性の高い言語への移行に向けた戦略的遂行手段を検討することを組織や企業に推奨する。メモリー安全性の高い言語として、C#やGo、Java、Ruby、Swiftなどが挙げられる」と記されている。 NSAはGoogleやMicrosoftにおける最近の調査結果を引用している。それらによると、「Google Chrome」や「Windows」内で発見されたセキュ

            米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨
          • 文字列から浮動小数点数に変換する、なるべく速く - toge's diary

            TL;DR 文字列から浮動小数点数に変換するならfastfloat使いましょう。 私が試せる環境で比較する限り、とても速いです。 細かいことが気になります C++でちょっとしたプログラムを書くときにいつも気になるのが 「文字列データから指定データ型への変換処理をどうやって効率的に書くか」 です。私だけかもしれませんが。 特に悩んでしまうのが「文字列→浮動小数点」です。 std::scanf, std::stringstreamを使うものは大抵すごく遅い std::strtodstd::stodはstd::stringへの変換が入るので避けたい std::from_charsは(libstdc++が)浮動小数点型に対応していない boost::sprit::qiが何故か速いのだけれどこのためにboost::sprit使うのは重い と色々制約が多いのです。どうにかならないものか。 fast_f

              文字列から浮動小数点数に変換する、なるべく速く - toge's diary
            • 2025年にサポート終了となるMicrosoft製品をチェック 〜Windows 10が10月に引退へ/「Microsoft Office 2016/2019」「Visual Studio 2015」などもサポート終了【やじうまの杜】

                2025年にサポート終了となるMicrosoft製品をチェック 〜Windows 10が10月に引退へ/「Microsoft Office 2016/2019」「Visual Studio 2015」などもサポート終了【やじうまの杜】
              • Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust

                Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust March 2021 Summary: I describe a simple interview problem (counting frequencies of unique words), solve it in various languages, and compare performance across them. For each language, I’ve included a simple, idiomatic solution as well as a more optimized approach via profiling. Go to: Constraints | Python Go C++ C

                • C言語で0からニューラルネットワークを自作してみた - Qiita

                  2023/06/23追記: 頂いたコメントを元にコードを修正しました。主に直した点は下記の通りです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 1.静的なメモリを用いることでMNIST全てを用いて学習が行えるようにしました。 (通常のメモリだとオーバーフローしてしまいますが、静的にメモリを取ることで大容量のデータを扱えるようになりました) 2.変数の初期化を明示しました。 3.正解率の求め方を改めました(間違った計算をしていました) その他軽微なミスを修正しました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー こんにちにゃんです。 水色桜(みずいろさくら)です。 今回はC言語を用いてニューラルネットワークを自作して、MNISTを分類してみようと思います。 今回作成したモデルの精度を以下に示します。 10回の学習で55.0%の精度を達

                    C言語で0からニューラルネットワークを自作してみた - Qiita
                  • C++しか使ってこなかった男がRustを使ってみた - Qiita

                    きっかけ このツイートが流れてきたのがきっかけでした。もともとRustには多少なりとも興味があったので せっかくだから読んで学んでみよう、ということで、プログラミング Rustの第2版を購入して読むことに。 本を読んだ感想 基礎の基礎から順を追って学習するといった内容ではなく、サンプルコードやRustの機能の説明をステップバイステップで行っていき、各章の最後に一緒にコードを書いて何か作る、といった方式で せっかちな自分にとっては有難い構成でした。 特に、「C++ではこんな事が起きるけど、Rustではこんなことは起きない」といった、C++との比較を通してRustの特色を説明している点が非常にわかりやすかったです。また、プログラミング言語の歴史や背景にも触れながら、Rustが他の言語では解決できなかった課題をどのように克服してきたのかが理解できる、素晴らしい一冊でした。 最初は思想強めだな、な

                      C++しか使ってこなかった男がRustを使ってみた - Qiita
                    • Fish 4.0: The Fish Of Theseus

                      About two years ago, our head maintainer @ridiculousfish opened what quickly became our most-read pull request: #9512 - Rewrite it in Rust Truth be told, we did not quite expect that to be as popular as it was. It was written as a bit of an in-joke for the fish developers first, and not really as a press release to be shared far and wide. We didn’t post it anywhere, but other people did, and we go

                      • 自作コンパイラ基盤の話 - Qiita

                        これは、言語実装 Advent Calendar 2020 19日目の記事です。 最近は、コンパイラやインタプリタなどの言語処理系や、それに類するものを作る人が増えてきています。(私の周りだけかもしれませんが。) しかし、もう一歩進んで、コンパイラ基盤を作ってみたという話はあまり聞きません。 コンパイラ基盤は、それの対象とするアーキテクチャについてや、それ自体の使い勝手を考えるのが非常に面白いものです。また、コンパイラ基盤を作る中で、コンパイラや計算機自体についてより深く学ぶことが出来ます。 この記事では、私が開発中のコンパイラ基盤を例として、コンパイラ基盤について語っていきます。 そもそもコンパイラ基盤とは コンパイラ基盤と言えば、近年色々な所で目にするのがLLVMです。 LLVMを使うことで、コンパイラの複雑で面倒な部分を避けつつ、コンパイラを構成することができるようになりました。 下

                          自作コンパイラ基盤の話 - Qiita
                        • 2023年に特にお世話になったC++ライブラリ8選 - Qiita

                          Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                            2023年に特にお世話になったC++ライブラリ8選 - Qiita
                          • ついに実現!実用的なC++20コンパイル時出力 - Qiita

                            はじめに 早いもので、今年ももう大晦日です。 大晦日といえば、やることは1つです。 そう、コンパイル時処理ですね!! コンパイル時出力 C++ のコンパイル時処理は非常に強力で、様々なことがコンパイル時にできます。 入力に依存しない計算なら、大抵コンパイル時にしてしまうことができます。 しかし、その結果の出力については実行時に行う必要があり、本当にコンパイル時に処理できているのか分かりにくくなってしまうこともあります。 そこで、なんかこういろいろ頑張ってゴリ押すことで、制限はありますがコンパイル時に出力することができます。 先日公開した記事では、そんなコンパイル時出力について書いています。 コンパイル時出力の改良 この記事の目的は、コンパイル時出力の改良です。 現在のコンパイル時出力は次のような問題点があり、使いやすくはありません。 出力の前後に余計な出力(はみ出たエラーメッセージ)がある

                              ついに実現!実用的なC++20コンパイル時出力 - Qiita
                            • さらばAPI、Twitter専用ガジェット「TW BOY」を作って遊ぶ|fabcross

                              2023年2月、Twitter APIの有料化が発表された。私も個人制作者としてTwitter APIを使ったサービスを作っていたことがあるので、一時代の終わりを感じて、しみじみとした気分になってしまった。 有料化されるまでは、まだ少し時間があるようだ。最後にTwitter APIを使った何かを作ってみたい。せっかくなので、個人でしか作れないようなものがいい。専用ガジェットなんてどうだろうか? Twitter専用ガジェットを作る Twitter APIみたいなWeb APIは、いきなり仕様が変わることがあるのでガジェットとの相性が悪い(ファームウェア更新が必要になる)。かつてタカラトミーから「ついまる」という、ツイートを音声で読み上げるおもちゃが発売されていたけれど、これも現在では使用不可能になっている。 だがここで、あえて専用ガジェットである。単に私の趣味の問題でもあるのだけど、「それし

                                さらばAPI、Twitter専用ガジェット「TW BOY」を作って遊ぶ|fabcross
                              • C言語のざんねんなしよう事典

                                モダンなプログラミング言語が多数登場した現代においても、C言語は重要な言語です。具体的に言うと、多くのプログラミング言語(あるいは言語ランタイム)がC言語で実装されていたり、OSのAPIはC言語のインターフェース(ABI)で提供されている場合が多かったり、異なるプログラミング言語間で関数呼び出しをしようとするとC言語のABIがベースとなったりします。 そんなC言語ですが、登場時から現代まで、少しずつですが進化を遂げています。その過程では、「この機能は良くなかった」ということが判明し、非推奨になったり削除された機能もあります。この記事では、C言語のそのような「良くなかった」機能を紹介します。 gets 関数 C言語には、誤って使うとバッファオーバーフローなどの問題を引き起こす関数が多数用意されています。例えば、

                                  C言語のざんねんなしよう事典
                                • PPLサマースクール2021 「JavaScript処理系とChromeブラウザの実装技術」 - 日本ソフトウェア科学会 プログラミング論研究会 (JSSST-SIGPPL) (Special Interest Group on Programming and Programming Languages)

                                  ニュース † Web ページを公開しました (6/29) 無事終了しました。講演資料へのリンクを追記しました (9/1) ↑ 概要 † JavaScript は世界でもっとも利用されている重要なプログラミング言語の一つであり、ウェブブラウザで利用可能なほぼ唯一のプログラミング言語という特徴から、ウェブアプリケーション開発で広く利用されています。 この重要性から、JavaScript処理系の性能改善に関する研究開発が活発に行われてきました。JavaScriptの性能改善は、動的な言語ながらの困難さも知られています。今年のサマースクールでは、鵜川さん(東京大学)にJavaScriptの実装技術について、その困難さをどう克服するか、基本的なところからご紹介いただきます。 JavaScriptを動作させるソフトウェアとして、Google が開発を主導するV8処理系、およびそれを利用するGoogle

                                  • より価値の高いソフトウェアを開発するために。C++エキスパート・高橋晶が薦める、C++の技術書5選 | レバテックラボ(レバテックLAB)

                                    より価値の高いソフトウェアを開発するために。C++エキスパート・高橋晶が薦める、C++の技術書5選 2024年7月16日 C++ライブラリアン 高橋 晶 C++日本語リファレンスサイトcpprefjpを運営し、C++の最新情報を日本語で発信している。株式会社Preferred Networksに所属し、スーパーコンピュータのソフトウェア開発に携わっている。 著書として、『C++テンプレートテクニック』(SBクリエイティブ)、『C++ポケットリファレンス』(技術評論社)、『プログラミングの魔導書』(ロングゲート)。 X: @cpp_akira GitHub: faithandbrave 1. 『Effective C++ 第3版』Scott Meyers 著、小林健一郎 翻訳 2. 『Effective Modern C++ ― C++11/14プログラムを進化させる42項目』Scott M

                                      より価値の高いソフトウェアを開発するために。C++エキスパート・高橋晶が薦める、C++の技術書5選 | レバテックラボ(レバテックLAB)
                                    • Rustの標準ライブラリは小さいのか? - Qiita

                                      はじめに 「Rustの標準ライブラリは小さい」と言われます。実際、正規表現や乱数など多くの言語で標準ライブラリに入っているようなものが、Rustの標準ライブラリにはありません。こうなっている理由は「標準ライブラリに入っていなくても依存関係を簡単に追加できる」「後方互換性を保ちながら大きな標準ライブラリを維持するのは難しい」といったことが挙げられます。もちろん標準ライブラリが小さいと不便なこともあり「サードパーティライブラリの選択が難しい」というのはよく言われるところです。 ところでRustの標準ライブラリは実際に小さいでしょうか?小さいというと、どうしても低機能・できることが少ないというイメージになりますが、個人的な印象としては「Rustの標準ライブラリはカバー範囲は狭いが高密度」というものです。 あまりこういう観点で書かれたものは見たことがないので、この記事ではRustの標準ライブラリの

                                        Rustの標準ライブラリは小さいのか? - Qiita
                                      • WasmGCについて予習する

                                        この記事はWebAssembly Advent Calendar 2023 2日目の記事です. ガベージコレクタ(WasmGC)[1]が10月頃にChromeとFirefoxでデフォルトで有効になり,標準化目前ということで大いに盛り上がったのは記憶に新しいかと思います. これはChromeが対応したというよりはChromeが採用しているJavaScriptのランタイムであるV8がデフォルトでWasmGCが有効になったというのが正確な表現で,DenoでもDartからビルドしたWasmを実行する際にGCを有効にするフラグを立てる必要がなくなり,実行しやすくなったなぁと皆さんも感じているかと思います. -$ deno run --allow-read --v8-flags=--experimental-wasm-gc run.js +$ deno run --allow-read run.js

                                          WasmGCについて予習する
                                        • 型付けは難しい

                                          ベン・フィードラーのブログより。 型検査と型推論 型検査とは、あるプログラミング言語で与えられたプログラムを実行し、すべての変数や式が正しい型を持っているかどうかを調べるプロセスです。例えば、文字列は文字列に代入され、算術式は数値のみを使用するなどです。一部の言語では型推論を提供しており、コンパイラに自分で正しい型を見つけるタスクも提供します。言語の特徴に応じて、型検査と型推論の問題は、些細なものから決定不能なものまで様々です。 一般的な用語 完全性 正しく入力されたプログラムを全てチェックできれば、タイプチェッカーは完了です。 健全性 正しく型付けされたプログラムのみを受け付けるものであれば、型検査は健全です。 決定可能性 任意の入力に対して、その入力が問題を満足するかどうかを有限時間で計算できる場合、決定問題は決定可能です。決定可能な問題の例としては、素数判定や充足可能性などがあります

                                          • Introducing workerd: the Open Source Workers runtime

                                            Introducing workerd: the Open Source Workers runtime2022-09-27 Today I'm proud to introduce the first beta release of workerd, the JavaScript/Wasm runtime based on the same code that powers Cloudflare Workers. workerd is Open Source under the Apache License version 2.0. workerd shares most of its code with the runtime that powers Cloudflare Workers, but with some changes designed to make it more p

                                              Introducing workerd: the Open Source Workers runtime
                                            • 「Chromium開発に興味あるエンジニア探してます」ブラウザ開発の仕事ってどんな感じか聞いてみた

                                              テックカンパニーをテックカンパニーたらしめているものはなにか?技術か、人か、それともチームなのか。 連載「Technology Company Internals」では、テックカンパニーの内側で働くエンジニアに、技術に精通したエキスパートが対面で話を聞き、テックカンパニーとは何か?を探るだけでなく、テックカンパニーを目指す企業の指針となることを目指します。 様々なデバイス上で動くブラウザを開発するのが仕事です 白石: 本日はよろしくお願いします。自己紹介からお願いできますでしょうか? 梅田: 梅田と申します。株式会社ACCESSで、webブラウザ開発事業のマネージャーを担当しています。 白石: ブラウザ開発を生業にしている、ってすごいですよね。珍しいというか。 梅田: はい、日本だと唯一…かどうかはわかりませんが、相当珍しいと思います(笑) 白石: それで上場までされているというのもすごい

                                                「Chromium開発に興味あるエンジニア探してます」ブラウザ開発の仕事ってどんな感じか聞いてみた
                                              • 競プロのための標準 C++

                                                ◆ 内容 競技プログラミングで知っておきたい C++ 標準機能を解説します。競技プログラミング独特のハックやスタイル(<bits/stdc++.h>, 大きな配列、using namespace std 等)を避け、一般の C++ ソフトウェア開発でも通用するコードを心がけています。 ◆ ライセンス 記事中のソースコードは CC0 1.0(パブリックドメイン相当)です。自由に利用・改変・再配布できます。 ◆ C++ バージョン C++20 / C++23(AtCoder と同じ gcc 12.2) ◆ 対象読者 ・競技プログラミングの上達のために C++ の機能を深く学びたい方 ・コンテスト中に参照できる C++ ドキュメントを探している方 APG4b や市販の入門書で C++ を学んだ人にとって有益な内容から書き進めています。将来はより幅広い内容を扱います。 ◆ 本書へのご意見・ご提案

                                                  競プロのための標準 C++
                                                • C++からRustに移行して幸せになる人、そうならない人 その違いは?

                                                  C++はRustが登場する前から成熟度の高い言語だった。開発者はC++からRustに切り替える必要があるのだろうか。必ずしもそうとは限らない。C++とRustの品質、両言語の相違点と類似点を調べて、どちらのプログラミング言語を選ぶかを決めたい。 C++はRustが登場する前から成熟度の高い言語だった。開発者はC++からRustに切り替える必要があるのだろうか。必ずしもそうとは限らない。 新たなプロジェクトに携わるプログラマーは、プログラミング言語の選択肢が不足することはない。プログラミング言語「C++」と「Rust」は、 ブラウザベースのソフトウェアからビデオゲームに至るまで、さまざまなプロジェクトに適しており、それぞれに利点がある。 C++は効率的で信頼性の高いプログラミング言語だ。信頼性、パフォーマンス、スケーラビリティの高さから開発者はC++を選ぶ。C++の標準テンプレートライブラリ

                                                    C++からRustに移行して幸せになる人、そうならない人 その違いは?
                                                  • 競プロで役立つC++20新機能 - Qiita

                                                    はじめに 競プロのコーディングが快適になるC++20新機能をまとめました!! C++20の豊富な新機能から競プロで便利な機能を合計で16個紹介します. ※(2023/8/7追記) AtCoderでは2023年の言語アップデートにより、ほとんどの機能が使用可能となりました。新バージョンのgcc12.2では、紹介されている機能のうち <format> を除くすべての機能が使用可能です。 参考文献 https://cpprefjp.github.io/lang/cpp20.html https://en.cppreference.com/w/cpp/20 を参考にしました. cpprefjp以外をあまり見ていないので,間違っているところがあるかもしれません. 誤りに気づいたら指摘していただけると幸いです. 標準ライブラリの新機能 1. コンテナのメンバ関数の追加 1-1. 連想配列に conta

                                                      競プロで役立つC++20新機能 - Qiita
                                                    • bpftraceを使ってバイナリの謎の性能劣化を突き止めろ - Cybozu Inside Out | サイボウズエンジニアのブログ

                                                      サイボウズ社内ではC++で開発している製品があります。 未知のバッファオーバーランなどの脆弱性への対策として、重要なコンポーネントについてはプロダクション環境で利用しているバイナリでも AddressSanitizer を有効にしてビルドしています。 その製品で利用しているコンパイラをgcc5.3.0からgcc7.5.0に更新したところ性能劣化が発生しました。 製品コードとは別の部分が原因のため、根本原因の追跡が難しそうです。perf,bpftraceを使って性能劣化を追いかけてみましょう。 本記事で利用しているAddressSanitizer, bpftrace, perfコマンドはネット上に良質な記事がありますので、使い方などの解説は今回は省略させていただきます。 gcc7.5.0において、性能劣化が発生する再現コードとして次のようなものを用意しました。 #include <strin

                                                        bpftraceを使ってバイナリの謎の性能劣化を突き止めろ - Cybozu Inside Out | サイボウズエンジニアのブログ
                                                      • 2024年の今、いかにしてVS2005を捨ててVS2015にする戦いは終わったか、そしてなぜCOMとの苦しい戦いが繰り広げられたか ~再入の悪魔~ - OPTiM TECH BLOG

                                                        概要 Optimal BizのWindows AgentはながらくVisual Studio 2005とVisual Studio 2015を併用してビルドする必要がありました。Visual Studio 2015化対応は2012年のVisual Studio 2012化対応からスタートしていましたが、対応範囲の大きさからモジュールごとにVisual Studio 2015化対応を行ってきました。そして2024年リリースのBiz 9.19.0にてVisual Studio 2015化対応は完了を迎えました。 しかし、埋め込まれたバグの修正にはCOMの理解が不可欠であったため、2020年代に突入した今になって私達はこれまで正面戦争を避けてきたCOMを0から学び直す必要がありました。そしてATLの不思議な挙動やSTAにおける再入との戦いを乗り越え、無事にリリースされました。 はじめに Opti

                                                          2024年の今、いかにしてVS2005を捨ててVS2015にする戦いは終わったか、そしてなぜCOMとの苦しい戦いが繰り広げられたか ~再入の悪魔~ - OPTiM TECH BLOG
                                                        • Announcing Flutter for Windows

                                                          Since we launched Flutter, we’ve focused on delivering a cross-platform solution for beautiful, tailored apps that are compiled to machine code and take full advantage of the underlying graphics hardware of your device. Today marks a significant expansion of this vision with the first production release of support for Windows as an app target, enabling Windows developers to benefit from the same p

                                                            Announcing Flutter for Windows
                                                          • 人気プログラミング言語のランキング、かつて上位3つのひとつだったJavaが凋落傾向【やじうまWatch】

                                                              人気プログラミング言語のランキング、かつて上位3つのひとつだったJavaが凋落傾向【やじうまWatch】
                                                            • チャットAI「Alpaca」をローカルにインストールしてオフラインでAIと会話できる「Alpaca.cpp」インストール手順まとめ

                                                              2023年3月に、スタンフォード大学がChatGPTと同等の性能を持ったチャットAIモデル「Alpaca」を公開しました。このAlpacaをPCにインストールしてチャットAIをローカルで動かせるようにする「Alpaca.cpp」が登場したので、実際にインストールしてチャットAIと会話する手順をまとめてみました。 GitHub - antimatter15/alpaca.cpp: Locally run an Instruction-Tuned Chat-Style LLM https://github.com/antimatter15/alpaca.cpp 「Alpaca.cpp」をインストールしてチャットAIと会話できる環境をWindows上に構築するには、まずC++のコンパイラや「CMake」「Git」などの各種ソフトウェアをインストールする必要があります。今回はC++のコンパイラを準

                                                                チャットAI「Alpaca」をローカルにインストールしてオフラインでAIと会話できる「Alpaca.cpp」インストール手順まとめ
                                                              • MySQL 8.0 は遅くなってきてる?何故?(2)

                                                                前のエントリの続きです。 念を押しておきますが、このブログの「内容は個人の考えであって、所属組織とは方針が異なる」と考えてください。 さて、MySQL 8.0.xの単スレッド性能がどんどん遅くなってきた要因は幾つかありそうなので切り分けていきたいと思います。 まずは、数年前のエントリ「やはりC++はCよりも遅い?」の影響をできるだけ正確に見積もりたいところです。実行バイナリの最適化レベルを合わせて比較して初めて、ロジックの劣化が判るわけです。コンパイラのオプションの範疇でできるだけ最大の最適化を行って計測したいところです。いくつか試した結果、clangのPGO+LTO が手軽な中では最も効果があったのでそれで同じ計測をしてみましょう。(GCCのPGO+LTO と clangのPGOのみ はこれよりも少し劣ったのでとりあえず。) (補足) PGO は、一旦ターゲットとなる処理をプロファイリン

                                                                  MySQL 8.0 は遅くなってきてる?何故?(2)
                                                                • C / C++ 言語のswitch文を最適化 (テーブルジャンプが使われるようにする) - 人生に疲れた男のblog

                                                                  先に概要を書くと caseの値は連番かつ昇順(上から小さい数で下に行くほど増えていく)となるように心がける。ある程度caseが多ければあとは勝手にコンパイラがテーブルジャンプ最適化を行う。 goto文やreturn文などでswitch文途中から抜けないようにする。あるとテーブルジャンプ最適化が行われない。 MSVC(Visual Studio)でコンパイルする場合、default:の箇所に__assume(0);と記述すれば上記二つを無視して強制的にテーブルジャンプ最適化が行われる。ただし、goto・return等でのswitch抜けがあるまま実行すると例外エラーが発生する。 追記:上記の__assume(0)はC++23から「std::unreachable()」で標準化 FM TOWNSエミュレータ「津軽」を弄っていて、どうもエミュレーターの実行速度が既にあるTOWNSエミュレータの「

                                                                    C / C++ 言語のswitch文を最適化 (テーブルジャンプが使われるようにする) - 人生に疲れた男のblog
                                                                  • どうやってコード品質を上げるのか? 実例で学ぶリファクタリング

                                                                    リファクタリングって何? いきなりですが「リファクタリング」について、普段どれぐらい意識していますか? コード品質に関わる重要な概念ですが、この単語は、職業としてプログラミングをやらない限り、人生で出会わない単語の筆頭と言えるかもしれません。下図は、リファクタリングと、おそらくそれと同程度には知られているのでないかと思われる開発用語の検索頻度を、Google Trendsで調べてみたものです。 リファクタリング、コードレビュー、スクラムの検索頻度の推移 検索期間は2013年10月21日から2023年10月21日、地域はJapan、カテゴリーはComputers & Electronics(SoftwareやProgramingをサブカテゴリに持ちます)です。「コードレビュー」もコード品質を上げるうえでは重要な行為だと思いますが、日本では意外と浸透していないようですね。コードレビューに関して

                                                                      どうやってコード品質を上げるのか? 実例で学ぶリファクタリング
                                                                    • 次期C標準 (C23) の内容が固まったらしい

                                                                      C23については最近のC言語と、次期C標準(C23)でも軽く紹介しました。 今回、C23入りする内容が大体固まったようなので改めて紹介します。 この記事を書いている時点での最新の公開されたWorking Draftは N2912 N3047 N3054 N3096です。ただし、C2y向けの最初のドラフトN3220もあり、そちらの方が実際の内容に近いかもしれません。 内容については会議参加者の投稿も参考にしています: https://twitter.com/rcs/status/1550526425211584512 C23 now finalized! : C_Programming というわけで、C23に入る主な機能はこちらです: C23に入る主な機能 POSIXの機能の取り込み: strdup, strndup, memccpy, gmtime_r, localtime_r C++の機

                                                                        次期C標準 (C23) の内容が固まったらしい
                                                                      • C言語を学びたての人のための電卓自作

                                                                        電卓を通じて、再帰下降構文解析を使った構文解析を行います。インタプリタ自作やコンパイラ自作の前段階として挑むとちょうど良いのではと思います。 ステップ1からステップ15まであります。ステップ1のファイルにどんどん加筆していくと、最終的に括弧を使った四則演算の式を解析できる電卓が出来上がります。各ステップは少しづつの書き換えだけで済むようになっています。 「大学に入ってからプログラミングを始めて、1年生でC言語を学んでいる」という人に向けて書きました。 「このステップは難しすぎる」「説明が分からない」「ここの説明は間違っている」等があれば、sou7まで連絡を頂けるとありがたいです。また、実装してみて「みてみて!電卓が実装できたよ!」というときにも連絡を頂けると嬉しいです。 参考実装はこちらにありますCommits · soukouki/c-calc · GitHub。ステップごとにコミットを

                                                                        • 「Google Chrome」のフォント処理がC/C++言語からRust言語に/「FreeType」からの移行でメモリ安全性を改善、脆弱性が出にくいライブラリに

                                                                            「Google Chrome」のフォント処理がC/C++言語からRust言語に/「FreeType」からの移行でメモリ安全性を改善、脆弱性が出にくいライブラリに
                                                                          • PhobosLab

                                                                            Introducing QOI — the Quite OK Image Format. It losslessly compresses RGB and RGBA images to a similar size of PNG, while offering a 20x-50x speedup in compression and 3x-4x speedup in decompression. All single-threaded, no SIMD. It's also stupidly simple. tl;dr: 300 lines of C, single header, source on github, benchmark results here. I want to preface this article by saying that I have no idea wh

                                                                            • 「Writing A Compiler In Go」が面白い

                                                                              数年前に読んだ書籍「Writing A Compiler In Go」がとても勉強になったので、どういう内容かを解説します。 Writing A Compiler In Go https://compilerbook.com/ 「Writing A Compiler In Go」とは 今回紹介するのは「Writing A Compiler In Go」になりますが、その前作にあたる「Writing An Interpreter In Go」の日本語訳が「Go言語でつくるインタプリタ」としてオライリーから出版されているため、ご存じの方も多いかと思います。 私は数年前に「Go言語でつくるインタプリタ」を読んでいて、続編の日本語訳が出るのを待っていましたが、なかなか発売されなかったので英語版を購入しました。 「Writing A Compiler In Go」を簡単に説明すると、「写経しながら軽

                                                                                「Writing A Compiler In Go」が面白い
                                                                              • MS-DOS(PC-98)のアプリケーションをC言語で作る - 少ないリソースを酷使する

                                                                                前回の記事でPC-98エミュ+FreeDOSの環境でMS-DOSアプリが動くことを確認した. となると,あと思うことは1つ. MS-DOSのアプリケーションを自作したい! ということです. 今回はC言語でMS-DOSのアプリケーションを作ってみましょう. 環境 OS:Ubuntu 20.04 PC-98エミュ:xnp2kai rev.22 d3fe02a FreeDOS(98):20200709更新のHDI形式 Cコンパイラのinstall i8086版GCC フリーのCコンパイラと言えばGCC.便利ですよね. しかし,少し前までGCCは32bit || 64bitのアーキテクチャしかターゲットにしてきませんでした. なので16bitのPC-98x1向けのバイナリは生成できなかったわけなんですよね. それが最近,ついに16ビット版GCCが登場しました.しかもDOS環境特化. 詳しい話は以下

                                                                                  MS-DOS(PC-98)のアプリケーションをC言語で作る - 少ないリソースを酷使する
                                                                                • GitHub - ggml-org/whisper.cpp: Port of OpenAI's Whisper model in C/C++

                                                                                  Stable: v1.7.6 / Roadmap High-performance inference of OpenAI's Whisper automatic speech recognition (ASR) model: Plain C/C++ implementation without dependencies Apple Silicon first-class citizen - optimized via ARM NEON, Accelerate framework, Metal and Core ML AVX intrinsics support for x86 architectures VSX intrinsics support for POWER architectures Mixed F16 / F32 precision Integer quantization

                                                                                    GitHub - ggml-org/whisper.cpp: Port of OpenAI's Whisper model in C/C++

                                                                                  新着記事