トップページ⇒tech
359コメント98KB

最速化プログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
最速化に繋がる話なら何でもOK。
言語不問。

ではスタート!
0002デフォルトの名無しさんNGNG
>>1を最適化してやってください。かわいそうで見てられません。

>>1をコンパイルしたコンパイラですが。とか書いてみようかしら?
0003デフォルトの名無しさんNGNG
Optimization Compiler for C++ (\590,000)
0004デフォルトの名無しさんNGNG
ゴール!
0005デフォルトの名無しさんNGNG
定数演算はイソライソでやらせる
00061001NGNG
このスレッドは最速で1000を超えました。
もう書けませんが、新しいスレッドは立てないでくださいです。。。
0007 NGNG
コンパイラ・・・なつかしい響きだなぁ

そういえば、GAME言語なんてのがあったなぁ。
ゲーム向きってことじゃなく、単なるアセンブラの記号化だけどさ。
0008デフォルトの名無しさんNGNG
>>7
素で一瞬悩んだよ・・・。俺は取り残されているのかと。
0009デフォルトの名無しさんNGNG
関数は全部インラインで犯る
0010デフォルトの名無しさんNGNG
処理の中でif文節が一番高価。
だからif文節を減らせばいい。
0011デフォルトの名無しさんNGNG
if文をなくせばいい
0012デフォルトの名無しさんNGNG
最適化マニュアルを読破する。
0013デフォルトの名無しさんNGNG
彼女の服も最適化する。
0014デフォルトの名無しさんNGNG
float,doubleからintへのキャストはどうする?
コンパイラに任せるとパイプラインがあぼーんするしょーもないコードにされてる
0015デフォルトの名無しさんNGNG
max(a, b)をif文なしで書けるって聞いたことある
んだが。
方法うp汁!
0016デフォルトの名無しさんNGNG
CPUをパワーアップする
0017デフォルトの名無しさんNGNG
おまえらオプティマズが何やらかすか理解してるのか?
0018デフォルトの名無しさんNGNG
>>14
丸めモード気にしないときは
FLDしてFISTPするだけにしてる。
0019デフォルトの名無しさんNGNG
倍制度演算は下位32ビットをadc命令でフラグっとく。
0020デフォルトの名無しさんNGNG
・お代

円周率1万桁
0021デフォルトの名無しさんNGNG
これより早いの作って。

七行プログラミング
http://pc3.2ch.net/test/read.cgi/tech/1018840143/827

向こうは行の少なさ勝負。
こっちは早さ勝負。
0022デフォルトの名無しさんNGNG
.NETってバイトコード?
exeは吐けないの?
0023デフォルトの名無しさんNGNG
>>1さんは2ちゃんねる初心者ですか?
書き込む前にSG(セキュリティー・ガード)に登録しないと危険ですよ。
SGに登録せずに書き込んだ場合、
あなたのパソコン内の情報が他人に見られる恐れがあります。
初期の頃から2ちゃんねるにいる方達は
かなりのスキルとこのBBSのコマンドを知っています
ですから簡単にあなたのIPアドレス等抜かれ、住所まで公開された人も数多くおり
社会的に抹殺されてしまいました。それが2ちゃんねるの隠れた素顔でもあります
SGしておけばまず抜かれるコマンド自体が無効になってしまうので
どんなにスキルがある人でもIPアドレスを抜くことが不可能になります

SGに登録する方法は、名前欄に「 fusianasan 」と入れる。
そして、内容に「regist」と書いて、書き込む。

これでSGの登録は完了します。
一度登録すれば、電話番号を変えない限り継続されます。
fusianasanは、正式にはフュージャネイザン、
又はフュジャネイザンと読みます。
元々はアメリカの学生達の間で、チャットの時に
セキュリティを強化する為に開発されたシステムです。
fusianasanを掲示板に組み込むのは結構面倒なのですが、
2ちゃんにカキコしてたらウィルスに感染したとか、
個人情報が漏れた等の抗議がうざったくなったひろゆきが、
仕方なく導入しました。
悪意のある人間にクラックされる前にSGを施す事をお勧めします。
0024デフォルトの名無しさんNGNG
>>13
ありがとう
























でもおまえは氏ね
0025デフォルトの名無しさんNGNG
Pentium4およびXeonプロセッサ最適化リファレンスマニュアル
にペアリングの説明がない(単語としても354ページ中、3つだけしか出てこない)
のは、ペアリングのこと考えなくてよくなったって事でしょーか。
0026868NGNG
>>25
PPro,P2の時からすでに考える必要がなくなったはずだが?
0027デフォルトの名無しさんNGNG
そうですか。あれ覚えるの面倒で挫折したんで、それは良かった。
002826NGNG
俺も面倒だからいやだね。
今でも 命令の後ろにコメントで ;U とか ;UV とか書いてるよ。
0029デフォルトの名無しさんNGNG
以下の構文ってどっちの方が安値なんですか?
言語はC/C++

・ifによる振り分け
if(a<b){/* Operation A */...}
else{/* Operation B */...}

・関数ポインタによる関数呼び出し
void opA(){/* Operation A */...}
void opB(){/* Operation B */...}

typedef void (*proc_type)(void);

proctype proc[]={opA, opB};

proc[a<b]();

ifが高価ってことはこうすれば分岐の処理は
安くなるってこと?
003029NGNG
訂正

proctype proc[]={opB, opA};

proc[a<b}
0031デフォルトの名無しさんNGNG
おまえ、まずifが高価な理由を考えろよ。
そんなアフォな質問するな。
0032デフォルトの名無しさんNGNG
int main( void )
{
return 0;
}
0033デフォルトの名無しさんNGNG
Pen4は分岐予測がとっても大事
0034閑話休題NGNG
多分ハッカーズかCウィザード本かなんかの受け売りなんだけど

アメリカの何処かの大学(具体名忘れた)で
C言語のプログラムの実行速度を競うコンテストがあって
その年の課題は
「データファイルを読み込んで何か規定の計算した結果を出力しろ」
ってものだったそうな。

三位は
配列に機械語コードを仕込んでスタックフローで実行させてたそうな。

二位は
一人で複数エントリできるのをいいことに最初に実行されたプログラムが
あとから実行されたやつに結果を受け渡してたそうな。

一位は
UNIXのカーネルのタイマ領域を書き換えてたそうな。
0035デフォルトの名無しさんNGNG
まあ、それは寓話なんだけどね
0036デフォルトの名無しさんNGNG
gccって、末尾再帰は最適化してくれるの?
0037デフォルトの名無しさんNGNG
高速化は難しいからなぁ…。
ここで質問してもまともに答えられる人いなかったり…。
















って、漏れも答えられないんだけどね。
0038デフォルトの名無しさんNGNG
>>37
いちいち行間を空けるなウザイ。
0039デフォルトの名無しさんNGNG
何を最適化するのよ?意味わからんよ。
スピードか?氏か?
004037NGNG
>>38
いちいち文句を付けるなウザイ。
0041デフォルトの名無しさんNGNG
>>40
いちいち反論するなウザイ。
0042デフォルトの名無しさんNGNG
>>41
いちいち…ん〜っ…とっ,とにかくウザイ。
0043デフォルトの名無しさんNGNG
ウザイ星人はウザイ星へ帰ってくれ。ウザイ。
0044デフォルトの名無しさんNGNG
数値をboolに変換するときってどれが一番
早いの?

int i=2;
bool b1=bool(i);
bool b2=(i!=0);
bool b3=!!i;
0045デフォルトの名無しさんNGNG
> bool b1=bool(i);
こりゃ一体何の言語だよボケナス。
0046デフォルトの名無しさんNGNG
>>45
C++ですが、何か?
0047デフォルトの名無しさんNGNG
そんなに問い詰めたら可哀想だよ、>>45はVBしか使ったこと無いんだからさあ。
004845NGNG
>>46
だったらよほど出来の悪いコンパイラでなければ
その程度の式はどれも同じになると思っとけ。
004946NGNG
>>47
あ、そうだったね。ごめんごめん。















>>45
とりあえず晒しage
0050デフォルトの名無しさんNGNG
bool b2= (i != 0);
これに決まってる!
ネーテブで2命令!
Pen3 800Mhzだと 0.1zepto sec くらいだ!
005144NGNG
>>50
マジですか!?
案外3番目ぐらいかと予想していたんですが。

なんか自分で調べる方法もありますかねぇ…。
0052デフォルトの名無しさんNGNG
              ,,.. -──- 、,
            ,. ‐'":::::::::::::::::   ....:``'-、
         ,/::::::::::::::::::: ....::::::::::::::::::::::::ヾ:、      ,....,
          /::::::::::::::: ..:::::::::::::::i、::::::::::::::::::::'、':,.    /  ヽ
       /::::::::::: ....:::::::::::::::::::::i:::!`、:ト、::::::::::::i i!   /     i
      i   ...::::::|'、ヽ;::::::::::::::|,!:!__リ,,'iヽ::l''、:'、   /      /
        | ..::::::::;:::i!:i ヾ:、ヽ:::::::::| リ , -─ リ i;il:ヽ, i    /    あはははは〜
       l:::::::::::::::i',i ':i ,メ、 \;:l '゙    `、 !::::/l ...::::::/``ヽ
      l::ヽ:::::ヽ:i,レ',.゙-‐''''         ',/'/..::::::::::/    l'ヽ;、  45と47のバ〜カ
       i:::::>、:ヾ,' /     _,.. -‐'ヾi    ,レ'::::::::::;r':..   /  i_\
        i:::i. `'‐,ゝ    i"       '! ,.‐''" :::::::::::i゙::::::::.../.  ノ 'i    
          !::\ `ヽ    ':,     l{   ..:::::/::L,. ‐'":::::;/  !
          l::::::::`''‐r\    ヽ.,__,.ノィ'‐-‐''"'ォ‐--,゙弋''''"::::::;.ノ
         |::::::::;ィ:::}、 ``'''─--、-‐ニ┤ ___ハ,`''ーヽ-'=‐''":::
          !::::::/ i:::|、\     ヾ´. i  ヽ   、''‐-、_::::::::::::::::: /
        i:::::/ i:::ハヽ`''‐、/l__\,| /    ヽ--、,.ニ=‐--‐'
0053デフォルトの名無しさんNGNG
>>52
>>48でなくて?
005445NGNG
>>51
騙りかと思ってたが、違ったのか。
お前のコンパイラはアセンブルリストも出力できんのか。
それとも調べ方も知らんのか?
0055デフォルトの名無しさんNGNG
N88-BASICの最適化ならお手のものだったけど
コンパイラを使い出してからは「動けばいいんだ」になってしまった
0056デフォルトの名無しさんNGNG
むしろどれくらい速くなったのか聞きたい。
0057デフォルトの名無しさんNGNG
              ,,.. -──- 、,
            ,. ‐'":::::::::::::::::   ....:``'-、     ツ〜〜〜〜ン
         ,/::::::::::::::::::: ....::::::::::::::::::::::::ヾ:、      ,....,
          /::::::::::::::: ..:::::::::::::::i、::::::::::::::::::::'、':,.    /  ヽ
       /::::::::::: ....:::::::::::::::::::::i:::!`、:ト、::::::::::::i i!   /  ● i
      i   ...::::::|'、ヽ;::::::::::::::|,!:!__リ,,'iヽ::l''、:'、   /      /
        | ..::::::::;:::i!:i ヾ:、ヽ:::::::::| リ , -─ リ i;il:ヽ, i    /    まあ、ハナクソでもくえよ
       l:::::::::::::::i',i ':i ,メ、 \;:l '゙    `、 !::::/l ...::::::/``ヽ
      l::ヽ:::::ヽ:i,レ',.゙-‐''''         ',/'/..::::::::::/    l'ヽ;、  45と47のバ〜カ
       i:::::>、:ヾ,' /     _,.. -‐'ヾi    ,レ'::::::::::;r':..   /  i_\
        i:::i. `'‐,ゝ    i"       '! ,.‐''" :::::::::::i゙::::::::.../.  ノ 'i    
          !::\ `ヽ    ':,     l{   ..:::::/::L,. ‐'":::::;/  !
          l::::::::`''‐r\    ヽ.,__,.ノィ'‐-‐''"'ォ‐--,゙弋''''"::::::;.ノ
         |::::::::;ィ:::}、 ``'''─--、-‐ニ┤ ___ハ,`''ーヽ-'=‐''":::
          !::::::/ i:::|、\     ヾ´. i  ヽ   、''‐-、_::::::::::::::::: /
        i:::::/ i:::ハヽ`''‐、/l__\,| /    ヽ--、,.ニ=‐--‐'
0058デフォルトの名無しさんNGNG
MOV AX, 0 よりも
XOR AX, AX の方が速いのれす
0059デフォルトの名無しさんNGNG
>>58
ペンティアム以降でもそうなの?
0060C++NGNG
ところでインラインのインラインなんですが
inline int fx(int x){ return fy(x); }
inline int fy(int y){ return ++y; }
これ最適化されると
++y;となりますか?
0061デフォルトの名無しさんNGNG
VB使いの>>45はもはや煽ることしか
できない罠
006259NGNG
メモリーの使用量が減る分キャッシュのヒット率が上がる?
006344NGNG
>>52
>>58
ありがとうございました。

やっぱりアセンブラが必須か…。
アセンブラの本引っ張り出して
勉強しなおしてきます。
006445NGNG
よろこべ44以外のアホ共。
BCCとVCでは、3つともまったく同じコードを吐いた。

>>59
ペンティアム以降でも同じ。というかコードのサイズが小さい。

>>62
メモリというか、コードが小さいからだな。
まさか0をメモリとは思ってないよな。
0065デフォルトの名無しさんNGNG
''''''''''‐-、,                        |   ま 47  !
::::::::::::::::::::\                     |     、 じ  |
:::::::::::::::::::::::::ヽ               _,,,,,,_ .|    気 ゃ  |
:::::::::::::::::::::::::::::':,               ,.-''"::::::::::::`l    に な  |
::::::::::::::::::::;ヘ::::;::i            /::::::::::::::::::::::::|   す か  l
::::::::::::::::::::'、|ヽ!ヾ           /::::::::A:::;::::/!::ムli    る っ /
:::::::::::::::::::、:'、              ,':::::::::ハ;ハ;l レ' '|ヽ  な た/
:::::::::::::::;:::| `!  ,.,.._         レi::;lV. ┃   ┃''"ム   /
::::::/l:::ハ:|,/  i ヽヘ,       '〈|         ソ'''''、
:::/ ,|/,,/    ',  l, ヽ.       l、   r一‐:、  /:::::::::::'、
/ | ''      \ 丶.ll''r、.,_   /::`':.、 ヽ--‐',.イ、::::::::::::::'、
:‐┴:、.       `i''y'l |: : : ``''ヽ‐''ヾil´`i';、''" /  >、:i、::::::',
    \       '-'、/ : : : : : : :`: : : lL,, l  /_ ,//: :\'、;::、
   ,.-‐ヽ,       `'-、: : : : : : : :l: 〈<,_i-‐l_,>〉′:i|: : \ヾ
  //´`.ヽ         `'-、 : : : : | : :`'ヾ l''": : : : :| : : : :ヽ
0066デフォルトの名無しさんNGNG
>>59
Pentium4では同じになっちゃったんだよん
006745NGNG
よろこべ44以外のアホ共。
VBとVBScriptでは、3つともまったく同じコードを吐いた。 (プッ
0068デフォルトの名無しさんNGNG
メモリーとか恥ずかしいこと書いてる>>62はアビバにでも
逝った方がいいと思います。
0069デフォルトの名無しさんNGNG
アビバノンノン
007062NGNG
>>68
アヒバ、どこにあるアルか?
0071デフォルトの名無しさんNGNG
汁かヴォケ
0072デフォルトの名無しさんNGNG
汁かヴォケ?それどこにあるアルか?
0073デフォルトの名無しさんNGNG
>>72
アル
0074デフォルトの名無しさんNGNG
>52=57=65
キモイなこいつアニオタか?
0075晒しageNGNG
>>50 のネタをマジで信じてる奴がいるのには驚いた。

( ´,_ゝ`) プッ
0076晒しageNGNG
>>45 の意味を理解せずに自分で自分を晒しているC++厨。

( ´,_ゝ`) プッ

このスレ爆笑。
0077デフォルトの名無しさんNGNG
>>76
いい加減間違いを認めたほうがいいですよ。
0078デフォルトの名無しさんNGNG
>>58
それ使うと、どれくらい速くなるんですか?
0079デフォルトの名無しさんNGNG
>>78
8086で4/3倍でし
0080デフォルトの名無しさんNGNG
xor ax, axはパイプライン汚さないか?
0081デフォルトの名無しさんNGNG
パイプラインって汚れるもんなんだ・・・

どうやって掃除するんだろ・・・
0082デフォルトの名無しさんNGNG
>>81 ありきたりなボケはいやん&heart;
0083デフォルトの名無しさんNGNG
>>80
ネタか?それともマジなのか?
0084デフォルトの名無しさんNGNG
>>80
分岐しないのにどうやって汚すんだよ!
0085うんちNGNG
うんち
0086デフォルトの名無しさんNGNG
VCって簡単なforループ展開してくれるのかな?
0087デフォルトの名無しさんNGNG
>>86
基本的に速度優先でコンパイルしても展開しない。
0088デフォルトの名無しさんNGNG
>>87
for(int i = 0; i < 3; i++)
 a[i] += b[i];
こんな簡単な奴でも?
008978NGNG
ども。
って事は、一個当たりにつき
1/4000000000秒だけ速くなるんですね。
すばらしい。

ちなみに展開はあまりよくないよ。
CPUキャッシュには限りがあるから、
プログラムサイズがでかくなればそれだけミスヒットが多くなる。
とくにループなんぞは展開するもんじゃない。
展開すべきは、頻繁に呼び出すけど中身が1行しかない関数。
それ以外で展開して遅くならなかった事は、俺はない。
0090デフォルトの名無しさんNGNG
>>89
まあ、自説を展開するのは結構だが、ちょっとは「ループアンローリング」
で検索ぐらいした方がいいと思うよ。
まあ、誰にも必要と言うわけじゃないから、今まで展開して速くならなかっ
たんだったら、これらも必要ないかもね。(そう言うプログラムしか書いて
いないってことだと思う。)
0091デフォルトの名無しさんNGNG
逆にこれやると無茶苦茶遅くなるからやめれってのある?
0092デフォルトの名無しさんNGNG
>>90
同意。
あと最近のCPUでは タイトすぎるループで遅くなることも。
0093デフォルトの名無しさんNGNG
ループにかかるコスト(ループ変数のデクリメントと比較と条件ジャンプ)
とループ内で実行する内容のコストを比較して
ループにかかるコストの"比率"が高いようならアンロールすべき
たとえば88だと明らかにループにかかるコストのほうが大きい

コンパイラのループアンローリング最適化がここまで見てるかどうかは謎
009489NGNG
>>90
http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/optcodedev/#1-1
0095デフォルトの名無しさんNGNG
まぁアルゴリズムを高速化できない奴らは
コーディングレベルの数%の高速化を楽しんでなさいってこった。
009689NGNG
ページフォールとのダメージはでかい。
いろいろ計測してきたけど、ページフォールトのダメージは相当なもんだよ
009792NGNG
>>96
もういいよ。知識の無さをあまり露呈するな。
0098デフォルトの名無しさんNGNG
>>93
ちょっと茶々。

> たとえば88だと明らかにループにかかるコストのほうが大きい

何で ? a[], b[] の型もわからないのに...。複雑なクラスだったら
どうする ?

最近のプロセサは、分岐予測とかするし、ループ変数の操作程度なら
他の演算と並行処理できたりするから、あまりループにかかるコスト
と言うのは大きくないよ。ループアンローリングの最大の目的は並行
実行するコードを増やすと言うのが大きい。

例えば >>88 のコードで、a[], b[] が int 型として、

for(int i = 0; i < 1; i += 2){
 a[i] += b[i];
 a[i+1] += b[i+1];
}

とやって、+= の演算が2個同時にできるプロセサなら効果が高そうで
しょ ?
0099デフォルトの名無しさんNGNG
>>95
コーディングレベルの最適化って、
普通アルゴリズムを最適化した上で、やるんでしょ?
「排他的に、片方しかやらない」ってことはないと思うな。
0100デフォルトの名無しさんNGNG
>とやって、+= の演算が2個同時にできるプロセサなら効果が高そうで
>しょ ?
もちろん試した上で言ってるんだよな?
OSとCPU言ってみ
0101デフォルトの名無しさんNGNG
Solaris 8とUltraSPARC IIIでつが。何か?
0102デフォルトの名無しさんNGNG
>>100
HI-UX/MPP と SR2201 ですが、それが何か ?
0103デフォルトの名無しさんNGNG
>>15 で max (a, b) を if文なしで書けるらしいって書いてあるけど
普通に C で書けるんですか?
PentiumPro の命令使えば分岐なしで書けると思うけど
0104デフォルトの名無しさんNGNG
(a>b)以下略
0105デフォルトの名無しさんNGNG
で、偉そうな >>100 はどこ逝ったんだ ? ププッ。
0106デフォルトの名無しさんNGNG
>>103
別にPProでなくても386命令だけで書けるぞ、ボケナス。
コンパイラの最適化でも VCあたりは 分岐無しのコードを吐く。
0107デフォルトの名無しさんNGNG
>>103
if 無しと言うなら簡単だろ ? c = a > b ? a : b;
分岐命令無しと言われると難しいが...。

なんか、駄スレがいっせいに上げられてるから、沈まないように上げとくよ。
0108デフォルトの名無しさんNGNG
>>106
cmovge とか使わないでできるんですか
0109デフォルトの名無しさんNGNG
#include <iostream.h>
#include <time.h>
int main( int argc, char** argv ) {
    int i,l,a[4],b[4];
    time_t begin;
    for( i = 0; i < 4; i++ )
        a[i] = b[i] = 0x55555555; // initialize.

    begin = clock(); // start loop
    for( l = 0; l < 100000000; l++ ) {
#ifdef UN_LOOP
        a[0] = b[0]; a[1] = b[1]; a[2] = b[2]; a[3] = b[3];
#else
        for( i = 0; i < 4; i++ ) a[i] = b[i];
#endif
    }
    std::cout << ( clock() - begin ) << " / [" << CLOCKS_PER_SEC << "]\n";
}
ループ展開って、そんなに効くの?ってことで、
とりあえず試してみました。
0110109NGNG
G4Cube( Power PC G4 450MHz / MaxOS X 10.2 )
% c++ -O3 -o loop1 loop.cpp
% c++ -O3 -o loop2 -DUN_LOOP loop.cpp

% ./loop1
315 / [100]
% ./loop1
318 / [100]
% ./loop1
314 / [100]

% ./loop2
23 / [100]
% ./loop2
22 / [100]
% ./loop2
23 / [100]

... まじっすか?
っていうか、漏れ、何か間違ってるのか????
0111デフォルトの名無しさんNGNG
>>106
できれば VC での
c = a > b ? a : b;
のコンパイルされたコードを載せてもらえませんか
0112109NGNG
// ifは使わないけども.... ( 未チェック )
template<T> T getGreater(T a, T b) {
    T tmp[2];
    tmp[0] = a; tmp[1] = b;
    return tmp[ b > a ];
}
0113デフォルトの名無しさんNGNG
>>103
アルゴリズム辞典には、
max(x,y)=(x+y+|x-y|)/2,
min(x,y)=(x+y-|x-y|)/2
と、書いてはあるが(P.81)、
絶対値(|〜|)を取る時に使っているのかもしれず・・・。
0114113NGNG
訂正 : 辞典 => 事典
0115デフォルトの名無しさんNGNG
MFC。
CFileよりCStdioFileのほうが速いです。
0116デフォルトの名無しさんNGNG
>>113
手持ちの gcc だと pentiumpro を指示しないと分岐されてしまいました。
0117109NGNG
>>113
絶対値とるのは、たとえば 64ビット整数とかなら、
「( i xor ( i math_shift_left 63 ) ) + ( i logical_shift_left 63 ) 」かな?
アセンブリは全然知らないから、具体的にどんなコードになるかは不明。

しかし、>>113は、>>112と比べて、ずいぶんエレガントだなぁ。
0118デフォルトの名無しさんNGNG
>>110
ちょっとオブジェクトコード見てみたほうがいいかとおもう。
外側ループでの最適化されているような気がするけど...。
0119109NGNG
>>118
アセンブリのコードを吐かせてみたけど、サパーリ読めませぬ。
0120デフォルトの名無しさんNGNG
>>117
なんかすごいコードですね。
>>113 と合わせて
c = a + b;
a -= b;
c += (a ^ (a >> 31)) + (((unsigned int) a) >> 31);
c >>= 1;
こんな感じで動いてるみたいですけど(チェックしてません)
元のコードより速いんだろうか・・・
0121デフォルトの名無しさんNGNG
>>106
> コンパイラの最適化でも VCあたりは 分岐無しのコードを吐く。
手元の VC6 でやったが吐かなぞ。吐くって言うならソース、設定とアセンブル
リスト出せや。

[VC6, 最適化 = 実行速度, CPU = Pentium]

int max(int x, int y)
{
 return x > y ? x : y;
}

 mov eax, DWORD PTR _x$[esp-4]
 mov ecx, DWORD PTR _y$[esp-4]
 cmp eax, ecx
 jg SHORT $L1013
 mov eax, ecx
$L1013:
 ret 0
012287NGNG
>>86
返事が遅くなったけど、マイクロソフトのホワイトペーパーをまず読んどけ

http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/optcodedev/
0123106NGNG
>>121, >>111
おお、申し訳ない。
確かに俺の勘違いみたいだわ。
ちょっと詳しく調べてみる。
0124106NGNG
やはり俺が
unsigned proc(unsigned a, unsigned b)
{
  return a > b ? 10 : 20;
}
のような定数を評価するコードと勘違いしたのかも。

上記のコードなら
  moveax, dword ptr [b]
  movecx, dword ptr [a]
  cmpeax, ecx
  sbbeax, eax
  andal, -10
  addeax, 20
  ret 0
に展開された。ごめんよ。
0125106NGNG
タブ文字が入ってたので訂正。
  mov eax, dword ptr [b]
  mov ecx, dword ptr [a]
  cmp eax, ecx
  sbb eax, eax
  and al, -10
  add eax, 20
  ret 0
0126121NGNG
>>124
なるほど、定数ならこの手が使えるんだ...。変数だと、差分を求めてお
かないといけないからちょっと辛いかな。パイプラインが異様に深くて
演算リソースがたくさんあるプロセッサなら...

mov eax, dword ptr [b]
 mov ebx, eax
mov ecx, dword ptr [a]
 mov edx, ecx
 sub eax, edx
cmp eax, ecx
sbb eax, eax
and eax, edx
add eax, ebx
ret 0

とかやってもいいかも...。
0127デフォルトの名無しさんNGNG
>パイプラインが異様に深くて演算リソースがたくさんあるプロセッサなら...
Pentium4
0128106NGNG
>>121
じゃあ俺も、ほとんど同じだけどXORで書いてみる。
    mov ebx,[b]
    mov eax,[a]

    cmp eax,ebx
    sbb ecx,ecx
    xor ebx,eax
    and ecx,ebx
    xor eax,ecx
    ret
0129デフォルトの名無しさんNGNG
ストール起こす
0130デフォルトの名無しさんNGNG
Pen3以降だと分岐予測が当たりやすい(then節/else節どちらかに偏っている)
ときはcmov系の命令を使うよりも素直にjccしたほうが速い

最近のgccって -march=pentiumpro すると cmov 使いまくる気がするが
偏りがあるなら逆効果...
0131デフォルトの名無しさんNGNG
なんでCPUなんかを考えてコード書くの?
すべてのCPUで最適なコード書けばいいじゃん。
0132デフォルトの名無しさんNGNG
age
0133デフォルトの名無しさんNGNG
       ρ(´Д`)
    >>131
(゚Д゚)σ
0134デフォルトの名無しさんNGNG
>>131
「すべてのCPUで最適なコード」があればね。
0135デフォルトの名無しさんNGNG
そういうのはコンパイラにまかせたほうがいい気がする
0136デフォルトの名無しさんNGNG
結論はコンパイラに任せろだね
0137デフォルトの名無しさんNGNG
最速にしたい場所を最速にする話なので
一般的な対処法はどうでもいいです
0138デフォルトの名無しさんNGNG
>>134
.NETしらんの?
0139デフォルトの名無しさんNGNG
>>138
.NETではPreJITの時にホスト環境での最適化コンパイルするわけだから
どっちかというとそのCPU向けの最適なコードを吐くという話になると思う
0140デフォルトの名無しさんNGNG
>>138
結局、JITコンパイラ最強ってこと?
0141デフォルトの名無しさんNGNG
> 結論はコンパイラに任せろだね

高級言語しかわからないヤシはそれしか方法が無いわな
0142デフォルトの名無しさんNGNG
>>141
そういうこと言わないの。
0143134NGNG
>>138
まあ、コンパイラ使うなら JIT だろうがなんだろうが、「結論はコンパ
イラに任せろだね」となるわけだから、いいんだけどさ。

そう言うレベルの話 (をした or しか理解できな) いんだろーね...。
0144デフォルトの名無しさんNGNG
> .NETではPreJITの時にホスト環境での最適化コンパイルするわけだから
> どっちかというとそのCPU向けの最適なコードを吐くという話になると思う

ターゲットを絞って最適化したCのコードでも
人間がアセンブリ言語で書いたコードに負けるのに
それより速いコードを吐くとでも?

コンパイラの最適化が人間より上回るのはもう少し先の話だわな
0145デフォルトの名無しさんNGNG
139はどちらが速いとか言ってない気がするが・・・
0146デフォルトの名無しさんNGNG
       ρ(´Д`)
    >>144
(゚Д゚)σ
0147デフォルトの名無しさんNGNG
コンパイラに勝った具体例を5個ほど挙げてもらえますかな?
01481例NGNG
「なんだこのクソコードは!全部書き直せ!」
という判断ができること。
0149デフォルトの名無しさんNGNG
>>147君、アセンブラ書けるどころか読めないでしょ
0150デフォルトの名無しさんNGNG
>>147
上の方にも具体例が載ってるのだが。もしかして読めんのか?
0151デフォルトの名無しさんNGNG
gccとかVCって、

実数の計算の性能を見ようとして、
double d = 1.0;
for( int i = 0; i<1000; i++ )
d += 1:
って書いたコードを、

double d = 1001.0;

って最適化しちゃったりとかします?
0152デフォルトの名無しさんNGNG
哀れな>>147がいるスレはここですか。
0153デフォルトの名無しさんNGNG
>>151
vcはする
0154デフォルトの名無しさんNGNG
なぜするとわかるんですか
0155デフォルトの名無しさんNGNG
gccもする
0156デフォルトの名無しさんNGNG
俺のVC5ではしなかったよ。
0157デフォルトの名無しさんNGNG
なぜするとわかるんですか
今すぐ答えてください
0158デフォルトの名無しさんNGNG
俺のgccではintではしたけどdoubleではしなかったよ。
0159デフォルトの名無しさんNGNG
gccは
int n = 10 / 3 * 3
を10に畳み込んじゃって困るんだよな。
0160デフォルトの名無しさんNGNG
>>158
おいおい、整数と実数のレジスタの違いも知らないのか。
0161デフォルトの名無しさんNGNG
それってまずくない?
0162デフォルトの名無しさんNGNG
>>160
どういうこと?
>>151をint d = 1;にかえたら1001にしてくれるけど
double d = 1.0;のままだとしてくれないってことだけど。
浮動小数レジスタ使ってコード書いたことありますよ。
すごい癖があったと思った。そのときは。
0163デフォルトの名無しさんNGNG
>>64

>よろこべ44以外のアホ共。
>BCCとVCでは、3つともまったく同じコードを吐いた。

( ´,_ゝ`) プッ

値がconst valueじゃどれもいっしょだっつーの。
せめて
int i=rand();
ぐらい変更しとけよボケ。







まぁ、そんなことも分からないようなヤツは
VBでもシコシコやってろってこった。
0164デフォルトの名無しさんNGNG
>>150
上の具体例は全部コンパイラがやってくれるんだが・・・・
016515NGNG
>max (a, b) を if文なしで書ける

>>120
あ、そんなようなコードだったとおもいまふ。
確か32ビット演算のみに対して有効なコード
らしいですが。
うる覚えでスマソ

考察していただいたみなさん、ありがとうございました。
0166デフォルトの名無しさんNGNG
>>163
( ´,_ゝ`) プッ

今頃になって遠吠え...
0167デフォルトの名無しさんNGNG
えっと、結論*ブラインドタッチを習得する。
0168デフォルトの名無しさんNGNG
また今頃になって粘着アホが。
>>163
> 値がconst valueじゃどれもいっしょだっつーの。

あれしきの式で俺の言うことを聞かずに同じじゃないと
騒いでいたアホが今頃になって何開き直ってんだ?
書くなら「ごめんなさい、確かにいっしょでした」だろ。

> int i=rand();
> ぐらい変更しとけよボケ。

大きく勘違いしてるなこいつ。
文句があるならあのコードを書いた奴に言え。
自分自身だから文句を言えんわな。

丸一日かけてようやくアセンブルリストの出し方を
覚えたのがそんなに嬉しいか。
まあ頑張って試行錯誤しろよ、ボケナス。
0169デフォルトの名無しさんNGNG
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
彼の怒りは頂点に達した模様
0170デフォルトの名無しさんNGNG
>max (a, b) を if文なしで書ける

自信ないけど手元にあったやつ
min = b + (a-b) & ((a-b)>>31);
max = a + (b-a) & ((a-b)>>31);

トップビットを全ビットに反映するコードがあればもっと最適化できそう
0171デフォルトの名無しさんNGNG
>>170
>>126 で外出だよ。
0172デフォルトの名無しさんNGNG
>>169
彼はこういう話題になるといつもこうだよ。
0173170NGNG
外出だったみたいなのでC言語版の4要素分岐なしソートをつくってみますた

// 32bit整数a, b, c, dを昇順に並べ替える
int t = b - a;
a += t & (t >> 31);
b += (-t) & (t >> 31);
t = d - c;
c += t & (t >> 31);
d += (-t) & (t >> 31);
t = c - a;
a += t & (t >> 31);
c += (-t) & (t >> 31);
t = d - b;
b += t & (t >> 31);
d += (-t) & (t >> 31);
t = c - b;
b += t & (t >> 31);
c += (-t) & (t >> 31);
0174デフォルトの名無しさんNGNG
>>173
念のために書いとくけど、符号付き整数の右シフトが
処理系依存なのは承知の上なんだよな?

それと、>170のコードの方は何の言語が知らないが
ビット演算をカッコで括って優先させる必要は
ないかな?ボケナス。
0175デフォルトの名無しさんNGNG
>>174
ま、>>173で多用してるのはビット演算じゃなくて論理演算だけどな。
0176デフォルトの名無しさんNGNG
>>175
ハァ ? わざわざ頭悪いことを、世間に広めたいのか ?
0177174NGNG
.。oO( 漏れ、何を勘違いしてたんだろう… )
0178質実☆疑問NGNG
Intelってどうしてあんなに糞なの?
0179デフォルトの名無しさんNGNG
>>177
173の間違い...死にたい。
0180デフォルトの名無しさんNGNG
イ�`
0181デフォルトの名無しさんNGNG
他に糞しかないからでしょ
0182デフォルトの名無しさんNGNG
素直にif使った方が速いんでしょ?
0183デフォルトの名無しさんNGNG
いえ三項演算子(?:)の方が他の1.5倍は高速です。
0184デフォルトの名無しさんNGNG
>>182 >>183
それじゃ釣れない。
0185デフォルトの名無しさんNGNG
>>183は、ウソってこと?
0186デフォルトの名無しさんNGNG
三項演算子ってシンタックスシュガーみたいなもんだしなあ
0187デフォルトの名無しさんNGNG
フゥンガー
0188デフォルトの名無しさんNGNG
>>170
もれはCで書いてもらったほうが分かりやすいので
ありがたい。

>>174
>カッコで括って優先させる必要はない
はずす義務はないからどっちでもいいだろ。
粘着。
とりあえずここに来んな。
0189174NGNG
>188
> はずす義務はないからどっちでもいいだろ。
お前いいかげんにその短絡思考を直せよ。
粘着呼ばわりされたのが悔しかったのかしらんが、
もう少し冷静に読んでみろ。

演算子の優先順位も知らん初心者に何言っても無駄か。
つーかCの基本さえ理解できん奴はVBでもいじっとけ。
0190デフォルトの名無しさんNGNG
>>188
さらに早とちりされるとウザいんで先に教えといてやるが、
俺はカッコを外せとは一言も書いた覚えはないぞ、このボケナス。
0191デフォルトの名無しさんNGNG
174が正しい。
188は
 a + b & c;
 a + (b & c);
この違いを勉強すれ。
0192デフォルトの名無しさんNGNG
リアル世界では相当蔑まされてんだろうなぁ…。
0193デフォルトの名無しさんNGNG
あほの188がいるのはここでつね?
0194188NGNG
>>191
min = b + ((a-b) & (a-b)>>31);
max = a + ((b-a) & (a-b)>>31);
こういうことですね(括弧の位置に誤り)。了解しました。

>>174

結局
>カッコで括って優先させる必要はない
意味のないコメントと。

的を得ていないレスならいらないって。
0195デフォルトの名無しさんNGNG
負け犬の遠吠え イクナイ
0196デフォルトの名無しさんNGNG
>>194
174じゃないがお前の発言の方がよっぽど意味ない。
失せろ粘着。
0197188NGNG
…なんか勘違いされてるようだが、
演算子の優先順位の話は漏れは
なにもしていないが。

自分の過ちを人に押し付けられても
困る。

>>191のレスはいいヒントになりますた。
括弧の範囲と言う意味で。
0198188NGNG
>174じゃないが
( ´,_ゝ`) プッ
0199デフォルトの名無しさんNGNG

        rー、
    」´ ̄`lー) \
    T¨L |_/⌒/
     `レ ̄`ヽ〈 ←174 (VB厨)
       |  i__1
     _ゝ_/ ノ
      L__jイ´_ )
        |  イ
         |  ノ--、           r'⌒ヽ_
        ゝ、___ノ二7  /´ ̄l、_,/}:\
         |ーi |   l_/ /__ィ::.  ゝ~_ィ´:; ,ゝ
        __〉 {      (T´ |1:::.  \_>、};;_」
       'ー‐┘       ! ` ̄''ァ一 、\ ヽ}   ←194 (粘着厨)
               〈` ̄ ̄^`¬ノ .::〔 ̄´
                   1  ヽ   .:::レ  ヽ、
                |_イー-、_;;j|_:.   ゝ、
                __,,,... -- |. {―――‐フゝ、   〉 -- ...,,,__
        _,, -‐ ´       ,r|__ト,    1ニノ ー'´       ` ‐- ,,_
    , ‐ ´         └―'´                     ` ‐ 、
0200194(粘着厨)NGNG
>>199
了解すますた。

ついでに200げと
0201191NGNG
>>197
気持ちはわからんでもないけど
負け犬の遠吠えはやめた方がイイと思うよ。
反感と煽りを買うだけ。
0202197NGNG
>>201
う〜ん。>>191の言いたい事は納得できるが
>>174の内容は的を得てなくて…。
0203デフォルトの名無しさんNGNG
おバカな粘着厨がよってたかって叩かれるスレはここでつか?
0204デフォルトの名無しさんNGNG
ちなみに的は「射る」ものだよな。
0205デフォルトの名無しさんNGNG
つか、明らかに無駄な括弧以外はどんどんつけていくべきだと思うが。
正直、Cの演算子の優先順位はおかしいので、つけてくれた方がありがたい。
0206デフォルトの名無しさんNGNG
>>205
普通は人間様に分かり易いようにいらない括弧でもつけることが多いわな。
0207174NGNG
>>202
確かに俺の
> カッコで括って優先させる必要はないかな?
という表現もまずかったんだろな。

要するに「カッコで括る必要はないのか?」という
問いかけだったのよ。
C/C++/Java等だとわかっていたら「カッコで括れよボケナス」
と書きたかったんだが、言語が不明だったので、
弱気な語りかけ口調になってしまったんだわな。

これで納得できたか? 誤解させて悪かったな。
0208デフォルトの名無しさんNGNG
優先順位が言語によってまちまちのものは括弧をつけちゃうことが多いな
複数の言語を使い分けてると混乱する可能性があるから

別にそれでコードの質が落ちるとも思えないし
0209デフォルトの名無しさんNGNG
優先順位で問題が発生しそーなときはコンパイラが警告してくれるのでそれにまかせてる・・・
0210デフォルトの名無しさんNGNG
迷ったら括弧
これ最強
0211デフォルトの名無しさんNGNG
>>210
禿同

↓んで最速化テクニックをどうぞ。
0212202NGNG
>>207
>カッコで括る必要はないのか?
そゆことね。
了解しますた。
0213デフォルトの名無しさんNGNG
>>173はこうしたほうが良いコードを吐くみたい

int t;
t = b - a; t &= t >> 31; a += t; b -= t;
t = d - c; t &= t >> 31; c += t; d -= t;
t = c - a; t &= t >> 31; a += t; c -= t;
t = d - b; t &= t >> 31; b += t; d -= t;
t = c - b; t &= t >> 31; b += t; c -= t;
0214デフォルトの名無しさんNGNG
誰も指摘しないんだけど、
>>170 や >>173 は
 int a=-2000000000;
 int b=2000000000;
 int c=7;
 int d=8;
とかを与えると誤動作するんですけど。
0215デフォルトの名無しさんNGNG
unsignedにしろとかそういうこと?
0216214NGNG
>>170はカッコが間違えてるから、>>194か。
でもはやり>>214を与えると誤動作。
-1073741824 〜 1073741823 の範囲、または
0 〜 2147483647の範囲のみ、正常に動作ってことじゃない?

それから、>>128はフル32ビットOKだが、
unsignedの比較なので、負数は使えない。
>>126も同じだが、これはバグっていて(subのオペランドが逆)全く正常に動作しない。
0217デフォルトの名無しさんNGNG
お前ら結局アセンブラ覚え立ての集まりということですか。
0218デフォルトの名無しさんNGNG
>>217
アセンブラ書いた2人のうち1人がちょいミスしただけ
→ アセンブラ覚え立ての集まり とはすごい論理ですな。


せめてお前がアセンブラ知ってたらな。
0219デフォルトの名無しさんNGNG
>>217
だめじゃない。またこんなとこで暇つぶしてて...

早く行かないとアセンブラ入門講習に遅れるよ!
0220デフォルトの名無しさんNGNG
>>214
>誰も指摘しないんだけど、
というよりは誰もそこまで見ないんだろうね。
170のカッコでさえたいぶ経ってから指摘されてるし、
173のコードなんて(長くて)読む気も起きなかった。
0221デフォルトの名無しさんNGNG
i%8->i&7
0222デフォルトの名無しさんNGNG
結局アセンブラってどこで使えばいいんだ?
0223デフォルトの名無しさんNGNG
電車の中とかでは使うな
0224デフォルトの名無しさんNGNG
トリッキーなコード
や
アセンブラ
のスレと見分けがつきません先生
0225デフォルトの名無しさんNGNG
mathematics libraryの実装に使う。
0226ワラタNGNG
>>223
携帯と同じで禁止だったんだ。
以降使わないように気をつけます。
0227デフォルトの名無しさんNGNG
>>222
アセンブラでプログラム組めばいいだけじゃない?
まぁ、最近ではインライソくらいにしか使ってないだろうけど。
0228p4168-ipad01kyoto.kyoto.ocn.ne.jpNGNG
regist
0229デフォルトの名無しさんNGNG

|                    ,,,,;;::'''''ヽ
 |          ;;:::::::'''"  .:     ,,,,,,  ヽ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ヽ...        "  ,,,,,,,,, .::    ;''“”`   | <  >>228 ぷぷぷっーー!!
  .―.        ;::''“”“~` ::::.       .. |.    \_____________
..| | ̄..              :::::::        |
 .\{_             ( ,-、 ,:‐、 )  |
  \\/..            \\\\  |
    \_ヽ.|       ヽ.__,-'ニ\\\\|
      `、ヽ         ヾニ二.\\\\
       ヽ\             ..\\\\;"
 ;".;":;"." :  `ー-::、_        ,,..'...\\\\ ;".
 .… … … … …;". `ー――'''''     .\\\\ ;":":
0230デフォルトの名無しさんNGNG
      ,,-''lllllllllllllllllllllllllllllllllllllll 、 
     /||||||||||||||||||||||||||||||||||||||ii;、        
   / ̄ ̄\||||||||||||||||||||||||||||||||||||ii;゙ヽ,      
  /       ヽ!!||||||||||||||||  ||||||||||!!,/    
 /        / ゙!!!||||||||||||  |||||||!!  
 \____/     ゙゙ヽ、ll,,‐''''""   

         ______
       /          `ヽ
     /              `、       \   ___|_|」
  / ̄ ̄\              | ヽ      /  |__  |
'" ̄ヽ     ヽ!!           |,," ヘ    <       | |
ヽ          ゙!!!、        ,,-'   iヽ── /      丿 /
|||l            ゙゙ヽ、ll,,‐''''""     | ヽ|||||||||      ヽ/
|||l     ___,,,,,,   ゙l    ,,,,,    \|||||||||      _ 
||!'    /ヽ、 ;::''“”“~`゙>┴<;''“”~` /\ |'" ̄|     | |
\  /  |ミミヽ──‐'"ノ≡- ゙'──''彡| |、 |    |     | |
   ̄|    |ミミミ/"~( ,-、 ,:‐、 ) '彡|| |、/   /      | |
 ヽ、l|    |ミミミ|  |、─\\\\ |彡l| |/  /_     | |
  \/|l    |ミミミ| \_/ ̄\\\\''|l/    ̄/     | |
  \ ノ   l|ミミミ|  \二二\\\\     フ      | |
    ̄\  l|ミミミ|    ̄ ̄ ̄\\\\    \     | |
    | \ ヽ\ミヽ    ̄ ̄"'  \\\\   /    |_|
    /  \ヽ、ヾ''''ヽ、_____//\\\\ /
  /  ヽ ゙ヽ─、──────'/|   \\\\ ̄/
. /       ゙\ \     / / \__\\\\
   ───'''" ̄ ̄ ゙゙̄ヽ、__,,/,-'''"      \\\\
0231デフォルトの名無しさんNGNG
コピペつまんない
0232デフォルトの名無しさんNGNG
コピペは面白いやつもあるが,センスの無いコピペ(↑)はつまらない。
0233デフォルトの名無しさんNGNG
Pentium4のprefetchの使いどころがわからん・・・
0234デフォルトの名無しさんNGNG
          ☆ チン        ハラヘッタ〜
                            ハラヘッタ〜
        ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)< 最速化まだぁ?
             \_/⊂ ⊂_)_ \_________
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |            |/
0235bloomNGNG

http://homepage.mac.com/leverage/
0236デフォルトの名無しさんNGNG
どっちが速いですか?
1)for (;i;i--)
2)while(i--)
0237デフォルトの名無しさんNGNG
>>236
振る舞いが違うし。
0238デフォルトの名無しさんNGNG
え、おんなじっすよー
0239236NGNG
ちなみにiはカウントダウンのために使うだけで、
他の個所からiの参照はしないものと見てください。
while(i--)putc(' ');
とか。
0240デフォルトの名無しさんNGNG
だったらますます差がないような・・・
0241デフォルトの名無しさんNGNG
おまいらboost::mpl使いなさい
0242236NGNG
なんかくだらないネタでスマソでした。
asmになおしたら一目瞭然でした。
0243デフォルトの名無しさんNGNG
>>242
で、どうだったの?
0244 NGNG
>>243 forが省ステップ
0245(゚∀゚)アハヨウ!!NGNG
へへへ
昨日参考書に書いてあったの見たんだけど

while(x>=10&&x<=20)とかよりも
while(x>11&&x<21)とかの方が

より速いんだって!!おーけー?
0246デフォルトの名無しさんNGNG
>>245
>>242
0247デフォルトの名無しさんNGNG
ここはいつからC初心者のスレになったんだ?
0248デフォルトの名無しさんNGNG
アセンブラ直接みりゃわかんだろうがよ。
0249デフォルトの名無しさんNGNG
アセンブリで短くても
必ずしも速くないと思うよ
0250デフォルトの名無しさんNGNG
>>245
>while(x>=10&&x<=20)とかよりも
>while(x>11&&x<21)とかの方が

少なくともループする回数が少ない分速くなるだろうね。
0251デフォルトの名無しさんNGNG
>while(x>=10&&x<=20)とかよりも
>while(x>11&&x<21)とかの方が

つーか間違ってるが。
0252デフォルトの名無しさんNGNG
>>251
xの下限に関する条件がより正確になったんだよ。きっと。
だから>>250になる。
0253デフォルトの名無しさんNGNG
>>250
> 少なくともループする回数が少ない分速くなるだろうね。

はぁ ? x 単調に増加/減少するとは限らんぞ。
0254デフォルトの名無しさんNGNG
>>253
はぁ?
初期条件が同じなら、x==10の場合にループをまわらないだろ。
0255デフォルトの名無しさんNGNG
>>254
真性か ? 例えば、

x = 20;
while(...){
 x++;
}

だったら、ループ回数は一緒だろうが。
x == 10 になるなんてどこに書いてあるんだ ?
0256デフォルトの名無しさんNGNG
>while(x>=10&&x<=20)とかよりも
>while(x>11&&x<21)とかの方が
x=10
x=12の時、気を付けて見れば?
右側プラス1したときに、左側もプラス1したのが間違いだな。
0257デフォルトの名無しさんNGNG
x < 10 と x <= 11 はどちらが速いのですか?
<= は2回比較する分、遅いと思うのですが・・・
0258デフォルトの名無しさんNGNG
>x < 10 と x <= 11 はどちらが速いのですか?
順に9以下が該当 11以下が該当(整数のときなら)で
別物だと思うが?
条件を変えずに、等号を変化させたり、|| &&を変えたりする仕方知ってる?
そういう操作(移行)に慣れたほうが良いと思うのだが?
0259デフォルトの名無しさんNGNG
Cコンパイラの最適化能力をバカにしてまつか??
0260デフォルトの名無しさんNGNG
詳しい奴ほどバカにしてる。
0261デフォルトの名無しさんNGNG
>while(x>=10&&x<=20)とかよりも
>while(x>11&&x<21)とかの方が
while(10<=x&&x<=20)
while(9<x&&x<21)
こうか?
で、等号判定の分とかだろ?
さらに
while(!(x<10||20<x)) or while(!(20<x||x<10))
「xの該当数の多い方を先」とかかな?「||」を考慮して。
0262デフォルトの名無しさんNGNG
>>256,>>261で間違い部分にアンダーラインが引かれていると思って、
どうやってるんだろうとちょっとびっくりした専用ブラウザ使用者は私だけですか?
0263デフォルトの名無しさんNGNG
>>257
> <= は2回比較する分、遅いと思うのですが・・・

大丈夫だ、世間の技術者は君が思ってるよりずっと賢い。

>>262

俺も...。
0264デフォルトの名無しさんNGNG
>>263
アセンブラレベルでは本当という罠
0265デフォルトの名無しさんNGNG
何言ってるんだお前ら
話が混沌としてるぞ
0266デフォルトの名無しさんNGNG
>>264
> アセンブラレベルでは本当という罠

はぁ ? そう言うプロセサと処理系は作れば作れるが、今時そんなタコなプロセサと処理系があるとはにわかには信じ難い。
ちなみに、プロセサ名と、処理系の名前は ?
0267デフォルトの名無しさんNGNG
264はアセンブラを知らないという罠
0268デフォルトの名無しさんNGNG
>>266
ネタにマジレスカコイイ
0269デフォルトの名無しさんNGNG
オニオンリングおいしい
0270デフォルトの名無しさんNGNG
オニキスリング・・・高くて買えなかったな最初は
0271デフォルトの名無しさんNGNG
アンダーラインってなに???
0272デフォルトの名無しさんNGNG
>>271
  ↑この線
0273デフォルトの名無しさんNGNG
線なんてないが????
0274デフォルトの名無しさんNGNG
またまた、ネタだろ?
0275デフォルトの名無しさんNGNG
>>274
IEでは「リンクに常に下線」という設定をしていないと見えないはず。
うちの Mozilla on FreeBSD では、1割くらいの下線が消える。
0276デフォルトの名無しさんNGNG
>>1
はブラウザでもライン出るけど、

>1
はカチュ使わないとライン出ない







        罠        !
0277デフォルトの名無しさんNGNG
          ☆ チン        ハラヘッタ〜
                            ハラヘッタ〜
        ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)< 最速化まだぁ?
             \_/⊂ ⊂_)_ \_________
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |            |/
0278デフォルトの名無しさんNGNG
>>277
あなた、催促化してますよ。
あげてみたら?
0279kita129020.kitanet.ne.jpNGNG
regist
0280デフォルトの名無しさんNGNG
あんましトリッキーなことすると後々のCPUでかえって遅くなるんじゃ?
コンパイラがどう最適化すべきかわからないようなコードは書かない方がいいような気も。
むかーーし、自己書き換えを使ったコードが命令キューの増えたCPUで誤動作起こしたりしたことあった。
MicrosoftのむかーーしのCが吐く初期化コードの一部だった気がするけど覚えてない。
0281デフォルトの名無しさんNGNG
>>280
んなこと気にしてたらスピード狂にはなれない。
0282デフォルトの名無しさんNGNG
自己書き換えって、今のCPUではできないよね?
つか、OSのせいでできないのか・・・。
厨な質問スマソ
0283デフォルトの名無しさんNGNG
>>282
環境による
GBAなんかでは現役だそうだ>書き換え
0284デフォルトの名無しさんNGNG
>>281
スピード狂は高級言語を使わない
0285デフォルトの名無しさんNGNG
alpha21164でのVCのヘルプに
アセンブラで書いたものも自動的に最適化されます、
とか書かれていてビビッタ。
0286デフォルトの名無しさんNGNG
このまえ計測したらさ、
 DWORD a,b,c;
 a+=((b>>31)&c);
よりも
 a=(a+((b>>31)&c));
の方が早かった…ちとショック。
0287デフォルトの名無しさんNGNG
>>282
今のCPUでも工夫すれば出来るよ。
その場で小さなコード片作って実行したりは普通に使うし
0288デフォルトの名無しさんNGNG
>>286
 それは単に命令のアライメントが違うだけかもしれないからアセンブラコードを見てみたら?
0289デフォルトの名無しさんNGNG
FORTH が最強です!
0290デフォルトの名無しさんNGNG
FORTHと共に有らんことを
0291デフォルトの名無しさんNGNG
コンパイラの構成と最適化だっけ?
0292デフォルトの名無しさんNGNG
>>282
ウイルス
0293デフォルトの名無しさんNGNG
自己書き換えは普通にやってると思うが…
JavaのJITとか。
0294デフォルトの名無しさんNGNG
最速化よりも、処理速度のボトルネックとなる個所を知りたい。
0295デフォルトの名無しさんNGNG
>>294
PA使えば?
0296デフォルトの名無しさんNGNG
結局、処理速度のボトルネックとなる個所を知る→そこを最速化する じゃん
0297デフォルトの名無しさんNGNG
そりゃ単なるチューニングの方法じゃん
0298デフォルトの名無しさんNGNG
============終了============
0299デフォルトの名無しさんNGNG
↑mailto:nssssyyy
0300デフォルトの名無しさんNGNG
↑mailto:ネッシー
0301 p95-dna13niihigasi.niigata.ocn.ne.jp NGNG
regist
0302デフォルトの名無しさんNGNG
C++でvitualでinlineになる時って実際あんのか?
構文的には許されるみたいだけど・・・・。
0303デフォルトの名無しさんNGNG
class D : public B { overrided_method(); };
で
{
 D d;
 d.overrided_method();
}
ならdでのoverrided_method()がinlineされてもおかしくないな。
0304302NGNG
ポリモーフィズムを使わなきゃ、inlineでもいいってことかな?
0305デフォルトの名無しさんNGNG
virtual使ってないなら、静的に(コンパイル時に)呼び出すべき関数が決まるから
inline化が行われる条件がそろいやすくなるね。

Exceptional C++とかにいろいろ書いてあったと思う。
0306302NGNG
>>303 >>305
Thanx!!
0307デフォルトの名無しさんNGNG
0308デフォルトの名無しさんNGNG
0309デフォルトの名無しさんNGNG
コンパイル単位が 1 つしかないなら、継承使ってもインライン化されるんじゃなかったか?
0310名無しさんNGNG
                        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
Λ_Λ  | 君さぁ こんなスレッド立てるから          |
( ´∀`)< 厨房って言われちゃうんだよ             |
( ΛΛ つ >―――――――――――――――――――‐<
 ( ゚Д゚) < おまえのことを必要としてる奴なんて         |
 /つつ  | いないんだからさっさと回線切って首吊れ     |
       \____________________/

(-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ…
(∩∩) (∩∩) (∩∩)

(-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ…
(∩∩) (∩∩) (∩∩)

(-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ…
(∩∩) (∩∩) (∩∩)
0311デフォルトの名無しさんNGNG
究極のコンパイラがあれば、
最速化なんて考えなくてすむのにね
0312デフォルトの名無しさんNGNG
究極のコンパイラ=アセンブラで書き直すプログラマ
0313デフォルトの名無しさんNGNG
>>310
スレ勃って3.5ヶ月後にそのAA使うわけか…知障?。
0314デフォルトの名無しさんNGNG
   ______________
 /:\.____\
 |: ̄\(∩´∀`) \  <先生!こんなのがありました!
 |:在  |: ̄ ̄ U ̄:|
http://muryou.gasuki.com/mona/
0315デフォルトの名無しさんNGNG
>>313
>>310は2chのほぼ全板に渡る荒らし。
0316IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0317デフォルトの名無しさんNGNG
>>310
笑
0318デフォルトの名無しさんNGNG
>>1はほんもの?
0319デフォルトの名無しさんNGNG

  ∠゙⌒"フ
  / ‘(・・)
  / (,,゚Д゚)  < テス�d
  i (ノ   !つ
〜゙:、..,__,.,ノ
   ∪∪
0320IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0321デフォルトの名無しさんNGNG
どこでしゃべってんのひろゆき?
0322デフォルトの名無しさんNGNG
多分一ヶ月くらいで新しい掲示板が出来るんだろうな
0323デフォルトの名無しさんNGNG
>>67が大阪
0324デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0325デフォルトの名無しさんNGNG
マンコとかきまくれるのは2chだけ!!ということに変わりはない
0326デフォルトの名無しさんNGNG
だよねぇ(^_^;)
0327デフォルトの名無しさんNGNG
さぁ・・・
0328デフォルトの名無しさんNGNG
ニュースみましたぁ。。。(>< 怖いっす!てか。ほんとにやりますかね?
0329デフォルトの名無しさんNGNG
本当に一人で浮いてるなぁ、、、>コピペ君
0330デフォルトの名無しさんNGNG
>>861
(´・ω・`)ショボーン
うん、気にしないでおくよ
0331デフォルトの名無しさんNGNG
2chに匿名性を見出していた人っていたんだ。
0332デフォルトの名無しさんNGNG
・・・・・・・だから それを このスレに 書き込んで どうしたいわけ ??
はー。
0333デフォルトの名無しさんNGNG
サヨナラ 2ちゃんねる
0334デフォルトの名無しさんNGNG
>>356
「質の低い」とは?
0335デフォルトの名無しさんNGNG
スレタイの日本語、微妙におかしいね。
0336デフォルトの名無しさんNGNG
あ
0337デフォルトの名無しさんNGNG
「氏ね」だとかはいいよね?
管理人は「逝ってよし」もダメだと言うのか!?
0338デフォルトの名無しさんNGNG
暗号化アルゴリズムの一種でしょ
0339デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0340デフォルトの名無しさんNGNG
バイク板である車種系のスレッドに集中して書いてたけど、IDを表示
する様になって、簡単に僕だって特定できてた。簡単な話で僕はCATVを
使ってる。見当をつけて町BBSでIDを探せば、その話に詳しいのなんて
日本で数人なんで地域が特定>アイツだなと判る。匿名性はID表示で
無くなったと思い以降は書き込みヤメ。
0341デフォルトの名無しさんNGNG
そもそも今回匿名じゃ無くしたのは北のお国が公式HPを作ったからじゃねーの?
さすがに北のお国相手に大祭り開催したらひろゆこもまずいだろうし
0342デフォルトの名無しさんNGNG
これでラジオ板からクソを追放できるか?
0343デフォルトの名無しさんNGNG
このスレくらいまったりしていれば良いのにね
0344デフォルトの名無しさんNGNG
2ch運営側の皆さんに質問です
IPを取られることによって何が変わるのでしょうか?

例えば削除人の立てたスレで
「自作自演ばっかりして上げ続けるな」とか言って削除人を怒らせたら、、
(当方、似たような経験をしたことがあり)

削除人がその人を追いかけてきて
その人の書き込んだスレで荒らしをやって仕返しをしたりするのでしょうか?

削除人が荒らしの監視のために常にIPをチェックして「こいつバカだな」とか
言ってるのでしょうか?
0345デフォルトの名無しさんNGNG
保守
0346デフォルトの名無しさんNGNG
そういうのはコンパイラにまかせたほうがいい気がする
0347デフォルトの名無しさんNGNG
つーか、すげー基本的なことなんだけど
「自己責任で書け」(^_^;)つーことやね。
何が大丈夫かどうかってのも、自己責任で考えましょう。
誰々が大丈夫って言ったからなんてー言い訳はもう通用しないんで・・・
0348デフォルトの名無しさんNGNG
殺人予告スレ発生。

【予告】小学生の登校を狙って・・・
http://live2.2ch.net/test/read.cgi/news/1042035002/

悪戯であることを祈る。
0349デフォルトの名無しさんNGNG
お前のは議論じゃないよw
「これ言っていいですか?」 「これ言うとヤバイですか?」 って他人に聞いてるだけw

寝るのがイヤなら、教えて厨は初心者板に逝ってねw
0350デフォルトの名無しさんNGNG
名前売りたい奴とか金儲けしたいやつとか鯖を貸したい業者なんて今が
絶好のチャンスだと思うけどな
0351デフォルトの名無しさんNGNG
frontiernet.netを止めただけだそうです。
0352デフォルトの名無しさんNGNG
 |  |ノハヽ
 |  |。‘从 <ななさんタイーホなの?(w
 |_と )
 |桃| ノ
 | ̄|
0353デフォルトの名無しさんNGNG
■「名誉毀損を知りえた時点で削除しろなんて無茶苦茶だ!」
今回、T動物病院側は内容証明郵便でひろゆきに10日以内の削除要求しました。
2ちゃんの削除ルールに則らずとも、社会通念上においても、法的にも、これは十分な通知です。

■「ある発言が名誉毀損かどうかを管理人では判断できない。
  法廷で判断されてからでもいいではないか」
今回、次のような発言は動物病院にとっては「社会通念上、名誉毀損と容易に推測できるはず」
とされています。
ブラックリスト、過剰診療,誤診,詐欺,知ったかぶり、えげつない病院、ヤブ医者、
精神異常、精神病院に通っている、動物実験はやめて下さい、テンパー、責任感のかけらも無い、
不潔、氏ね、被害者友の会、腐敗臭、ホント酷い所だ、ずる賢い、臭い
0354デフォルトの名無しさんNGNG
中年オヤジはこれだから困る
自分で書き込んで1人で笑ってるんだろうな
0355デフォルトの名無しさんNGNG
「確認はしてないが2ちゃんのどこかで誹謗中傷されてると聞いたんで探して削除しる!」
(^_^;)人はこれをデムパと言う・・・・
0356デフォルトの名無しさんNGNG
実はもう終わってます 
0357山崎渉NGNG
(^^)
0358デフォルトの名無しさんNGNG
ID:1/uCJjOuは知的障害者
ID:ADTGAx9xはヒッキー

つーか、いつ寝てるんだ?>おまいら
0359山崎渉NGNG
(^^)
■ このスレッドは過去ログ倉庫に格納されています