C++のstd::functionは遅いらしいのでもっと高速なコールバック機構を考えてみた
C++で開発をしていると時折悩むのが、「関数を受け取る場合どのように受け取り保持するか」という問題だ。C++にはこれに対する解が3つほどある。 悩むというのは実現できなくて悩むのではなく、どれを使って実現するかを悩むのである。
- 関数ポインタで受け取る。
- テンプレートで受け取る。
std::functionで受け取る。
C++で開発をしていると時折悩むのが、「関数を受け取る場合どのように受け取り保持するか」という問題だ。C++にはこれに対する解が3つほどある。 悩むというのは実現できなくて悩むのではなく、どれを使って実現するかを悩むのである。
std::functionで受け取る。この記事はConoHa Advent Calender 2023 14日目の記事です。
あのConoHaがGPUを提供し始めたらしいともっぱらの噂。 GPUをC++で直接殴る話を書いている人間としては聞き捨てならないので早速申し込んで使ってみました。
近頃の若者はGPUと言えばPythonだ、NumPyだ、CUDAだ、などと言うばかりで嘆かわしい限り。ここはひとつ、OSやGPUベンダに依存しないC/C++向け低レイヤ開発APIたるVulkanで触ってみなければなりません。
本当に原因究明がだるかったので残しておきたい。
そもそもAndroid NDK上でvcpkgを使う方法についてもネット上に情報が少ないので解説しておきたいところだが、それはこの記事では一旦置いておく。
注: このページの記述は2023/10/28時点の情報です。今後openal-softのバージョン更新に従って情報は古くなる可能性があるためご注意ください。
テキストエディタ然りペイントツール然り、何かしらのデータや作品の編集ソフトを利用するならそこに「Ctrl+Z」の存在を期待してしまうのは現代人の性である。 その手のツールを実用的に開発するならば、やはり「元に戻す」を真面目に実装することを迫られよう。
最近実際にそういう実装をやってみたことがあったので、そこで得られたアンドゥ・リドゥ実装の知見を書き留めておく。
諸用により、スマホのようなタッチデバイスの画像表示UIなどで使われるスワイプ/ピンチ操作を自力で実装することがあったためその時に分かったことを書く。
技術的にどうこうというよりは、「既存のソフトウェアに実装されている多くのUIコンポーネントはこのように動作するよう作られているし我々もそれを気持ちいいと感じる」という話にあたる。なので特に実装言語には依存しない話になるはずだ。
Windows でペンタブ・液タブの筆圧情報などを取ろうとした場合、「WinTab」という API と「Tablet PC API」という主に 2 つの API がある。
2 つのうち WinTab の方はMicroSoftでなくWacom社が出しているものであるため、他の会社のペンタブとの互換性をあまり期待できない。なので Wacom と生涯を共にし永遠の愛を誓うつもりが無いなら、基本的には Tablet PC API の方を使うべきだと思う。
その一方で Tablet PC API の方を用いた筆圧取得については日本語圏にあまり分かりやすい解説記事が無いため、他の人にも役立つようここにまとめてみる。
先日Twitterで「Lapce」というエディタが少し話題に上っていた。VSCodeっぽいUIになっており、Rust製で高速らしい。 試しに軽く使ってみたので使用感をメモ。
公式サイトはここ: https://lapce.dev/