並び順

ブックマーク数

期間指定

  • から
  • まで

161 - 200 件 / 681件

新着順 人気順

c言語の検索結果161 - 200 件 / 681件

  • Python コードの高速化のアプローチ - Qiita

    はじめに こんにちは。こんばんはかもしれません。爲岡 (ためおか) と申します。 2020年4月から株式会社グロービスにて機械学習エンジニアとして働いています。 グロービスでは機械学習技術を利用したプロジェクトや、データ基盤の運用改善プロジェクトを担当しています。 機械学習技術を利用したシステムには様々なものがあると思いますが、 現状のグロービスにおいては、ユーザのリクエストに対して機械学習を行い、 すぐに結果を返す必要があるようなシステムは扱っておらず、 ある程度の時間をかけて学習、推定した結果を非同期にアプリケーションに連携するシステムのみを扱っています。 ゆえに、今のところは機械学習技術を利用したロジックを書くときに、速さを意識することはあまりありません。 一方で、空いている時間に競技プログラミングをやっていることもあり、 高速なコードについて考えたり、書いたりすることは個人的には好

      Python コードの高速化のアプローチ - Qiita
    • GitHub - carbon-language/carbon-lang: Carbon Language's main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)

      C++ remains the dominant programming language for performance-critical software, with massive and growing codebases and investments. However, it is struggling to improve and meet developers' needs, as outlined above, in no small part due to accumulating decades of technical debt. Incrementally improving C++ is extremely difficult, both due to the technical debt itself and challenges with its evolu

        GitHub - carbon-language/carbon-lang: Carbon Language's main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)
      • なぜこれまでなかった? C言語の公式ホームページが新たに公開、テキスト中心の簡潔な内容【やじうまWatch】

          なぜこれまでなかった? C言語の公式ホームページが新たに公開、テキスト中心の簡潔な内容【やじうまWatch】
        • C++ コンパイル時「出力」 ~C++にできないことはない~ - Qiita

          これは、 C++ でコンパイル時に出力まで済ませようとした話です。 コンパイラは GCC に限ります。 はじめに もうすぐクリスマスですね! クリスマスにすることといえば……、 そう、コンパイル時処理ですね!! コンパイル時処理 C++ のコンパイル時処理は非常に強力で、様々なことがコンパイル時にできてしまいます。 普通はコンパイル時に決まる定数の計算に使われますが、これを悪用利用してコンパイル時に処理がすべて終わるようなものも書くことができます。 例として、コンパイル時 FizzBuzz を書いてみます。 #include <array> #include <string_view> #include <algorithm> #include <concepts> #include <iostream> template <std::unsigned_integral T> conste

            C++ コンパイル時「出力」 ~C++にできないことはない~ - Qiita
          • mints: 5.7kb の TypeScript コンパイラを作った

            世の中の TypeScript コンパイラが大きすぎるので作りました。 ここで試せます。 jsx と jsx pragma のサポートもしたので、 preact も動いています。 実装方針 ビルドサイズ第一 とにかく軽量に mints自体が他のコードをビルドするときの速度ではない点に注意 現状、まともなエラーレポートが出ない。エラーメッセージをインライン化するとビルドサイズが増えるため。 空白行と型情報を落とすだけ ES5 への変換や commonjs への変換は実装しない enum と constructor と jsx のみ transform する特殊対応をしている 真面目な構文解析をしてない 例えば 1+1*2 のような binary expression は結合順を解析してない。型を落とすだけなら不要 prettier でフォーマットされたコードはコンパイルできるのが目標(空白行

              mints: 5.7kb の TypeScript コンパイラを作った
            • C言語でWasmインタプリタを実装した話

              概要 公式のcore testが全て(UTF8, WAT, SIMD関連のものは除く)通るWasmインタプリタをC言語でフルスクラッチで実装した。自作Wasmランタイムで省略されがちなValidation Stageも実装した。この記事はWebAssembly Advent Calendar 2023の三日目の記事である。 目的 このWasmランタイムを実装するにあたり、「できるだけ仕様に従って実装する」ことを心掛けた。Wasmの仕様書は以下のissueが立つほど読みにくいものとなっているが、ランタイムをどのように実装すべきかが詳しく書いてあり、一応仕様書を頑張って読めばランタイムが作れるようになっている。 この自作Wasmランタイムの目的は、できるだけ仕様に従った実装を与えることで、仕様の理解を助けることである。早さや効率性よりも分かりやすさを優先しているため、実用には向かない。仕様書を

                C言語でWasmインタプリタを実装した話
              • 【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
                  • GitHub - google/autocxx: Tool for safe ergonomic Rust/C++ interop driven from existing C++ headers

                    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                      GitHub - google/autocxx: Tool for safe ergonomic Rust/C++ interop driven from existing C++ headers
                    • 米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨

                      印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます 米国家安全保障局(NSA)は米国時間11月10日、ソフトウェアのメモリー安全性強化に向けたガイダンスを公開した。同機関はその中で開発者らに対して、ハッカーらによるリモートコード実行(RCE)をはじめとするさまざまな攻撃からコードを保護するために、C#やGo、Java、Ruby、Swift、Rustといったメモリー安全性の高い言語に移行するよう推奨している。 これらの言語の中では、Javaが企業向けアプリや「Android」アプリの開発で最も幅広く使用されている一方、Swiftは「iOS」アプリの開発環境に取り込まれている点もあって人気プログラミング言語の上位に入っている。また、RustはシステムプログラミングにおいてCやC++の代替とし

                        米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨
                      • 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++標準の登場
                        • 文字列から浮動小数点数に変換する、なるべく速く - 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
                                • 自作コンパイラ基盤の話 - Qiita

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

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

                                    たぶん2023年一番お世話になったライブラリです。 2022年まではsimdjsonをよく使っていたのですが、新規プロジェクトはGlazeばかり使っています。 開発が活発だし、ISSUEへの対応が速いのもありがたいです。 良い点 SIMDを利用していないのにsimdjsonやyyjsonと遜色ない速度で動作する 構造体やクラスだけでなくSTLコンテナもJSONとの直接読み書きができる 中間データに独自バイナリ形式を利用してさらに高速化できる いまいちな点 長い文字列が多いJSONデータの読み込みではSIMDを使っているライブラリに対して不利になる 最後のフィールドのカンマやコメントの読み込みに対応していない ストリーム的な処理はない(と思う) 代替ライブラリ 似たようなアプローチでSIMDを使ってさらに速いJsonifierというライブラリがあります。 純粋な速度を求める場合にはこちらを使

                                      2023年に特にお世話になったC++ライブラリ8選 - 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

                                      • ついに実現!実用的なC++20コンパイル時出力 - Qiita

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

                                          ついに実現!実用的なC++20コンパイル時出力 - Qiita
                                        • 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++しか使ってこなかった男がRustを使ってみた - Qiita

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

                                              C++しか使ってこなかった男がRustを使ってみた - 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言語のざんねんなしよう事典
                                                • Rustの標準ライブラリは小さいのか? - Qiita

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

                                                    Rustの標準ライブラリは小さいのか? - Qiita
                                                  • より価値の高いソフトウェアを開発するために。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)
                                                    • 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++ の主要な標準機能のサンプル付き解説を執筆しています。C++ のバージョンは AtCoder の gcc 12.2 に準拠した C++17 / 20 / 23 です。競技プログラミング固有のハックやスタイル(<bits/stdc++.h>, 大きな配列、using namespace std 等)の使用を避けているため、一般的な C++ ソフトウェア開発でも使える、また C++ 標準ライブラリの機能 (std:: から始まる) を意識したコーディングの練習ができます。 ◆ 対象読者 ・競プロ上達のために C++ 標準ライブラリを一通り学びたい方 ・コンテストで参照できる C++ ドキュメントを探している方 ・現時点ではとくに APG4b や市販入門書で C++ を学んだ人にとって有益な内容から書き始めています。将来的にはさらに幅広い内容を扱う計画

                                                                競プロのための標準 C++
                                                              • 人気プログラミング言語のランキング、かつて上位3つのひとつだったJavaが凋落傾向【やじうまWatch】

                                                                  人気プログラミング言語のランキング、かつて上位3つのひとつだったJavaが凋落傾向【やじうまWatch】
                                                                • 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 | サイボウズエンジニアのブログ
                                                                      • 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
                                                                        • 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
                                                                            • チャット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)
                                                                                • どうやってコード品質を上げるのか? 実例で学ぶリファクタリング

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

                                                                                    どうやってコード品質を上げるのか? 実例で学ぶリファクタリング

                                                                                  新着記事