- 1 : 2024/11/11(月) 18:15:08.24 ID:xFvWLnU40
-
ビデオ・オーディオを扱うアプリの多くで採用されているオープンソースライブラリ「FFmpeg」で、驚くべきパフォーマンス向上が達成されました。
アセンブリ言語(assembly)を手書きすることで、94倍も処理速度が向上したとのこと。この試みが行われたのはAV1デコーダー「dav1d」においてですが、もともと約8%がアセンブリなのだそうです。
そのほかはC/C++言語のソースコードとして記述され、CPUが直接理解できる機械語にコンパイル(変換)された上で実行されています。しかし、コンパイラーによる変換に頼らず、人の手でアセンブリを記述し、最新CPUに搭載されている「SSSE3」「AVX2」「AVX-512」といった拡張命令を積極的に活用することで、思った以上の効率化が実現できたのだとか。
コンパイラーもそうした最新のCPU拡張命令を活用するオプションがあり、人手を介さなくてもかなりの最適化を行ってくれるはずですが、細部には改善の余地が多く残されているのかもしれません。
もしかすると、将来バージョンの「FFmpeg」はかなり速くなる……のかも。そうなれば、「FFmpeg」を採用するアプリにも恩恵は大きいでしょう。「FFmpeg」の開発チームは、近いうちにこのアプローチに関するチュートリアルを提供するとしています。
筆者の手には負えそうにありませんが、興味ある方はウォッチしてみるとよいでしょう。マルチメディアライブラリ「FFmpeg」がアセンブリ言語の手書きで爆速になったという報告
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1638345.html - 2 : 2024/11/11(月) 18:16:54.03 ID:AWJZRKJi0
-
全部アセンブラで書いたら鬼のように速くなると思う
アセンブラ書けないやつは全部クビね - 3 : 2024/11/11(月) 18:17:35.82 ID:U6cCKAhA0
-
凄いけど滅茶苦茶大変だろ
- 4 : 2024/11/11(月) 18:17:58.26 ID:seZCdwoh0
-
今でもエムペグ動画とか使ってる奴いるの?
- 5 : 2024/11/11(月) 18:18:13.47 ID:RI5N/92k0
-
手間が凄そう
- 6 : 2024/11/11(月) 18:18:21.48 ID:OheXIiN00
-
そうだ!人の手によるアセンブリをプログラム化すれば!!
- 7 : 2024/11/11(月) 18:18:29.49 ID:LODI36BJ0
-
上手い人間が最適化すれば、そういう事もあるだろうな
もともとCは関数呼び出しのオーバーヘッドが大きいから計算には向かんって言われてるし
その昔、技術計算に特化したUBASICてのもあったな - 15 : 2024/11/11(月) 18:22:00.14 ID:x33gFWWH0
-
>>7
Cつーかブランチはスタックにレジスタの中身退避とか
戻ってきたらスタックから戻すとかコストかかるしね
レジスタ増えてるから違うのかもしれないが - 8 : 2024/11/11(月) 18:18:34.22 ID:iN0HF5UZ0
-
1時間かかるエンコードが1分かからなくなるのか?
- 9 : 2024/11/11(月) 18:18:44.77 ID:o85zTIi60
-
AIに最適化させろよ
- 41 : 2024/11/11(月) 18:38:22.79 ID:ZnSTNFje0
-
>>9
だな - 73 : 2024/11/11(月) 19:02:23.78 ID:3PNHKzq50
-
>>9
> AIに最適化させろよ人の手で書いたら早くなったんだよ
- 10 : 2024/11/11(月) 18:19:25.17 ID:LIwQ9/dL0
-
ChatGPTでアセンブラに直してもらったら
速くなる? - 11 : 2024/11/11(月) 18:19:36.21 ID:4CXOLJIt0
-
汚染ブラジャー?
- 12 : 2024/11/11(月) 18:19:37.49 ID:SZIYwdD50
-
arm系はどうなの
- 13 : 2024/11/11(月) 18:19:42.02 ID:AWJZRKJi0
-
最適化Cって無くなったのかな?
MSCは遅いよ… - 14 : 2024/11/11(月) 18:20:16.83 ID:uu1YzsFN0
-
なんで人間様がアセンブラ書かなきゃならねえんだよ💢
コンパイラがもっと頑張れよ💢😡 - 16 : 2024/11/11(月) 18:22:14.12 ID:9YvzLxX40
-
マジかよアセンブリ言語習得してくる
- 17 : 2024/11/11(月) 18:22:26.08 ID:BPjEDvNl0
-
AIにアセンブラ変換させるといいな
- 18 : 2024/11/11(月) 18:24:28.55 ID:QdKeYwFO0
-
AIにって言ってるやつそれただのコンパイラやん
- 19 : 2024/11/11(月) 18:24:49.66 ID:x33gFWWH0
-
今ってCPUキャッシュもでかいし面白そうではある
- 20 : 2024/11/11(月) 18:25:51.05 ID:iqXsTURh0
-
困憊ら酷すぎでは
- 21 : 2024/11/11(月) 18:25:51.79 ID:JjCoQ8ew0
-
>>1
AV1デコーダー限定じゃ、使い道がないなw - 22 : 2024/11/11(月) 18:26:53.74 ID:GYp2REAE0
-
なるほど
これからはシステムはプロンプターが生成AIに作らせて人間はアセンブラでボトルネックの高速化担当か
まさに人間はAIの奴隷だな - 23 : 2024/11/11(月) 18:27:47.93 ID:fikdhU4z0
-
インラインアセンブラ
昔は凄いプログラマーが高速化やってたよな
高級言語しか書けない今のプログラマーは平凡 - 61 : 2024/11/11(月) 18:53:31.50 ID:ZQd+X78a0
-
>>23
処理が高速化&メモリも増えてるから可読性を重視してるんだよ、今は - 24 : 2024/11/11(月) 18:28:15.23 ID:CmSw8ixB0
-
スタックしたり無駄な部分はコンパイラでコード吐かせたらあるやろな
- 26 : 2024/11/11(月) 18:28:59.65 ID:AGAHpHyj0
-
AVX-512無い人はどうすんのさ
- 27 : 2024/11/11(月) 18:29:54.22 ID:x33gFWWH0
-
>>26
AVX256?で2回とか - 28 : 2024/11/11(月) 18:29:56.28 ID:18PmoTnF0
-
アセンブラって言語なん?
ニモニック並べてるだけだよな - 39 : 2024/11/11(月) 18:36:55.94 ID:GYp2REAE0
-
>>28
ニモニックとか言葉使ってるのにアセンブラ分からないは無いだろ
当然、アセンブラも機械語ではあるが中身はレジスタレベルの転送が何回か行われている - 29 : 2024/11/11(月) 18:30:34.90 ID:bVg14Q4l0
-
そりゃそうだろ
- 30 : 2024/11/11(月) 18:30:48.29 ID:/KgINDnm0
-
昔はゴリゴリ書いてた
- 31 : 2024/11/11(月) 18:30:58.79 ID:C4mxT4DF0
-
互換性保てるなら何しようが構わんが
- 32 : 2024/11/11(月) 18:31:22.64 ID:nkOMbi5/0
-
本当のアセンブリはCPUもGPUも専用になるからな
いまのプログラミングなんて本当の意味では昔のbasicと同じでインタプリンタみたいなもんだから最適化されたアセンブリと比べたらクソ遅いに決まってる - 33 : 2024/11/11(月) 18:31:55.59 ID:01Mbjpdh0
-
これコンパイラがダメダメってことでは
- 35 : 2024/11/11(月) 18:34:30.16 ID:x33gFWWH0
-
>>33
長いコード書いちゃだめって言われてるので
関数の呼び出し(ブランチ)の多用にどうしてもなってしまう - 34 : 2024/11/11(月) 18:32:58.96 ID:ZHiiIUou0
-
intrinsicで勘弁して
- 37 : 2024/11/11(月) 18:35:57.99 ID:h91b1fnb0
-
Z80のマシン語で腕を鍛えたわいの出番か!
- 38 : 2024/11/11(月) 18:36:11.97 ID:x33gFWWH0
-
ループでせいぜい数回ならメモリもいっぱいの時代なので
ジャンプ命令とか使わず同じコードを並べた方が早いのかな? - 50 : 2024/11/11(月) 18:44:28.76 ID:FiLDT3AP0
-
>>38
早いよ。
先読みとか付いてたらわからんけど、ループカウンターインクリメントとカウンタ値判定とループ元へのJUMP命令分クロックを余計に使うからね - 53 : 2024/11/11(月) 18:47:21.35 ID:h91b1fnb0
-
>>38
キャッシュがない時代は高速化のためにループ展開してたが今はCPUキャッシュがあるからループした方がキャッシュがヒットして速い - 40 : 2024/11/11(月) 18:37:43.04 ID:nI3dQ9/q0
-
アセンブリで高速化を突き詰めると書いた人しか分からなくなるんだよ…
- 47 : 2024/11/11(月) 18:42:35.31 ID:x33gFWWH0
-
>>40
そうそう
メモリを介するとクロック無駄になるのでレジスタ上で全部終わらせて
変数がメモリに存在しないとか普通だし
論理演算やビットシフトで計算コスト減らしたり - 54 : 2024/11/11(月) 18:47:49.89 ID:FiLDT3AP0
-
>>47
AレジスタクリアはAに0を代入じゃなくて、A同士で排他的論理和とかな - 42 : 2024/11/11(月) 18:38:56.12 ID:6QCob8uT0
-
そりゃアセンブリで機械側の言語のほうが余計な処理が入らず早いに決まっとるわw
ただ小さなアプリならできるかもしれんが
大規模だと無理なわけで - 43 : 2024/11/11(月) 18:40:01.16 ID:FiLDT3AP0
-
昔はニーモニック書いてハンドアセンブラでMZ-80に打ち込んで遊んでたなぁ
マシン語だと死ぬほど早かった - 44 : 2024/11/11(月) 18:40:31.95 ID:+OlXFyWk0
-
コンパイラうんこ過ぎない?
Microsoftとかでそんなになる?
そんなにうんこなら未だにアセンブラー生きてるでしょ。 - 45 : 2024/11/11(月) 18:40:46.77 ID:tIHQCMqB0
-
誰もメンテ出来なくなるな
- 46 : 2024/11/11(月) 18:41:36.77 ID:ATZXY+6r0
-
今ではc言語速いと言われてるけど本当に処理速度が必要な部分はアセンブラで書いてたな、pc98全盛期の頃だけど
- 56 : 2024/11/11(月) 18:48:26.01 ID:h91b1fnb0
-
>>46
PC98はなんの面白みもないクソみたいなパソコンたったなぁ - 48 : 2024/11/11(月) 18:42:55.29 ID:dDuqMsHk0
-
アセンブラで書けば桁違いに早いのは当然だろうね。
- 49 : 2024/11/11(月) 18:43:26.43 ID:Vzx70kmz0
-
マシン語の本を立ち読みして家で記憶を頼りにMSXへ打ち込んでたわ
小学生で本買う金なかったけど記憶力は鍛えられた - 51 : 2024/11/11(月) 18:44:45.33 ID:yt17i8gx0
-
BASICでゲーム作ったら遅くてお話にならんかった。
繰り返し呼ばれる処理をハンドアセンブルして機械語で打ち込んだらクッソ速くなったのを思い出した。 - 52 : 2024/11/11(月) 18:46:28.25 ID:3hYj7rZ20
-
アセンブリ言語とかを勉強すればいいのか?
- 55 : 2024/11/11(月) 18:47:51.85 ID:rTolIQKB0
-
dsPIC使ったら高速処理はアセンブリで書けって
訳もわからずコピペしてた - 58 : 2024/11/11(月) 18:48:46.76 ID:mjnQ94p90
-
やわ銀ジジイが来てないか確認
- 59 : 2024/11/11(月) 18:49:41.29 ID:7VhDfm7Y0
-
コンパイラが馬鹿だったってこと?
- 60 : 2024/11/11(月) 18:50:48.67 ID:u3Q8W4I80
-
セキュリティホールを意図的に埋め込んでも誰も発見できなくなりそう
AIが見つけてくれる? - 62 : 2024/11/11(月) 18:53:43.48 ID:eBJUpb1A0
-
HDL使えよ
アセンブラより速いぞ - 63 : 2024/11/11(月) 18:55:58.66 ID:c/wR5glz0
-
汗って結局、機種、cpu別に書き分けするの?グラボ毎にも?
- 64 : 2024/11/11(月) 18:56:33.02 ID:/8uOqkFT0
-
ひと頃はコンパイラの方が速いとよく言われたものだが
歴史の浅いSIMD命令は人の方がまだ上なのかね - 65 : 2024/11/11(月) 18:58:31.00 ID:PRoDzkY10
-
じゃば「ₙ́͘ ɪ ̵」
- 66 : 2024/11/11(月) 18:58:38.08 ID:5Et20Hal0
-
それよりもめちゃくちゃ効率のいいコンパイラ作れば 億万長者になれるんじゃね?
- 67 : 2024/11/11(月) 18:58:43.64 ID:iU4tCwkN0
-
このスレに限らずなんでもかんでも
AIという奴が多くて笑う
魔法じゃねーんだぞ - 68 : 2024/11/11(月) 18:59:01.49 ID:vpJqZ9UH0
-
AIにやらせておけば作ってくれると思ってたら。
- 69 : 2024/11/11(月) 19:00:36.02 ID:oi43BhPn0
-
最近AIにスクリプトのことをずっと聞いてるけどわりとポンコツだからAIはそこまで万能じゃないぞ
- 70 : 2024/11/11(月) 19:00:56.55 ID:djJMj0qj0
-
AIにやらせろってw
それただのコンパイラだろwww - 71 : 2024/11/11(月) 19:01:08.30 ID:80nmg7fZ0
-
コンパイラはオーバヘッドだらけだし
マシン語最強っすね - 72 : 2024/11/11(月) 19:02:10.62 ID:80nmg7fZ0
-
Windowsもアセンブラで記述しろ
- 74 : 2024/11/11(月) 19:02:48.61 ID:UU3fTUwg0
-
こいう一瞬の輝きはできるけど、潰しが効かないだろアセンブラは
コメント