VBでC/C++に負けないくらいの速いアプリを作ろう
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG・文字列や配列や構造体などバイト数が多い変数を関数の引数にする場合、参照渡しをする。
・ネイティブコードコンパイルでコードの実行速度を最適化を選択する。
・最適化の詳細設定をすべてチェックする。
・数値はint(16ビット)ではなくlong(32ビット)を使用する。
・数値型の同じ変数に対しての比較ではIfよりCaseを使う(要するにCaseの数が多い場合)
(ジャンプテーブルに展開されます)
・画像処理等で1ピクセルずつ扱う場合はPointやPSetを使わず、
Byte配列で処理しAPIを使用して転送、又はその逆をする。
・クラスのプロパティを何度もアクセスせずにローカル変数に代入してからアクセスする。
・Variant型は使用せずに適切な型を使用する。
・適切な型のクラスを使用し実行前バインディングを使用する。 複数の型のクラスを代入する場合、
Object型を使うよりインタフェースを使用したほうが良い。(実行前バインディングになる)
これらをすればC/C++等と遜色ない速度で動作します。
その他速度を上げるためのテクニックを書くスレ
0002デフォルトの名無しさん
NGNGCで作れば済む話じゃん
0003デフォルトの名無しさん
NGNGまあそうだが、書き方が悪いだけなのにVBは遅いというデマを
真に受けている輩が多いので。
0004デフォルトの名無しさん
NGNGそれについては同意
0005デフォルトの名無しさん
NGNG160 名前: デフォルトの名無しさん 投稿日: 03/02/04 23:44
>>142
小さい方から数えて 20000 個の素数をエラトステネスのふるいにより算出する時間をミリ秒で計った。
PentiumIII-800、768 MB、Windows XP Pro SP1、VC++6 Pro SP5、VB6 Pro SP5、Delphi 6 Personal
VC++ (Debug) : 10034
VC++ (Release) : 9724
VB (IDE) : 49992
VB (P コード) : 40007
VB (最適化) : 9944
VB (詳細最適化): 9784
Delphi : 9854
何気に、誤差程度の違いしかなく拮抗している。
漏れは Delphi をよく知らないので改良の余地はあるかも知れぬるぽ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=63
0006デフォルトの名無しさん
NGNG科学技術計算ならともかくそんな小手先の技法ではわずかしか速くならない。
逆に可読性が下がって生産性も下がる。
書き方が良くないのは1の方だ。
VBは遅くないという部分には同意。
5にあるように普通に書いてれば十分な性能がある。
ランタイムが非常に大きいため(.NETでも同じか)のろい印象を与えるだけだ。
0007デフォルトの名無しさん
NGNG氏ね
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGSrtingを全部Byteだなんて、VBらしくない、悪いコードだよ
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG代替クラスつくれよ
0012デフォルトの名無しさん
NGNGVBの利点が全部殺されるだけじゃん……
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNGVCでDLL書くぐらいならVBで高速化したほうがVBらしさを生かせる
0015デフォルトの名無しさん
NGNG技術者のスキルアップして無知を改善するだけ。
0016デフォルトの名無しさん
NGNGマジレス。
VB厨は必死じゃないからVB厨って言われるんですよ。
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG数十倍も遅くなったっていうコードを見たら
ループで長めの文字列を関数にByValで渡し、
一文字ずつMid(しかも$なし)で取得していた。
あんたが悪いんでしょって言ったら、逆切れしたので
書き直してやったら、すっかりおとなしくなったよ。
0019デフォルトの名無しさん
NGNGそこまでって、別にたいしたことじゃないじゃん。
VBでも他の言語と同じようにAPI使うんだし。
所詮パフォーマンスとのトレードオフだよ。
0020デフォルトの名無しさん
NGNGVB厨が悪いんだ
なんてことは20世紀から言われてることでループ内でプロパティにアクセスするようなヤシや
値渡しと参照渡しの違うがわからないようなヤシが消えることはないでしょう
とりあえずDelphiみたいにTipsまとめて普及させりゃ多少はマシになるんじゃないだろうか
コピペはVB厨の最も得意とするところだし
0021デフォルトの名無しさん
NGNG別に>>1を絶対守る必要は無いんだよ。
速度が必要な場所だけやる。
他の言語でも当たり前なことがなぜ出来ないんだろうね。
0022デフォルトの名無しさん
NGNGC言語では
for(i=0; i<GetCount(); i++) なんてやるよりも
j=GetCount(); for(i=0; i<j; i++) などとやる方がいい。
なぜならループを繰り返すごとにGetCount()が呼ばれるから。
しかし、VBでは始めに一度しか呼ばないので、
For i=0 To GetCount() というコードは問題ない。
0023デフォルトの名無しさん
NGNG比較して言っているやついねーし。
いくら遅いって言っても>>5で証明されてるしな。
0024デフォルトの名無しさん
NGNGそういう例はVBだけじゃなく、Delphiとかにもある。
しかしCのやり方を踏襲するのも間違いじゃない。
C風のやり方をするのを、下位互換性を考慮すると言う。
用はVBのやり方が通用しない世界もあるってことを知ってれば
良いということ。
但しVBのほうが読みやすいのは間違いない。
VBはVBに向いた世界があるんで、無理してCとかC++とじか
JavaやC#と張り合っても仕方が無いと思うが。
002524
NGNGに訂正。
0026デフォルトの名無しさん
NGNG張り合うつもりは無いけどデマは許せないよ。
自分が無知で遅いコード書いてるのに、
言語のせいにしている奴多過ぎ。
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG> VC++ (Debug) : 10034
> VC++ (Release) : 9724
> VB (IDE) : 49992
> VB (P コード) : 40007
> VB (最適化) : 9944
> VB (詳細最適化): 9784
> Delphi : 9854
何気にDelphiが一番遅いかったり。まっ誤差程度だけど。
0030デフォルトの名無しさん
NGNGあとは何かというとADOだのDAOだの背負ってるからそういう印象があるんでそ。
0031デフォルトの名無しさん
NGNGそれのソースどこにあるの?
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNGこれはエラストテネスとはいわない。素数列挙してるだけ。
0040デフォルトの名無しさん
NGNG機能を持っているかということが重視された頃の時代の話。
今は確実に逆に向かっているのだが。
0041デフォルトの名無しさん
NGNGこれは公平な競争とはいえませんね
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGおい。(それならC++だってインラインアセンブラで書けばいいじゃん…)
単一関数内での最適化はDelphiは弱いよ。
Delphiはどっちかといえば関数を呼び分けるような場面に強い。
0044デフォルトの名無しさん
NGNG激同。こんなスレポイ。
| ∧_∧ | |
|( ´∀`)つ ミ |
|/ ⊃ ノ | | ◎
0045デフォルトの名無しさん
NGNGあきらめろよ。
0046デフォルトの名無しさん
NGNGやるならVB同士で、違う記述を比較して、
こういう書き方をすればこれくらい速くなる(あるいは遅くなる)、というのを見るべきじゃないか?
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG別に比較してもいいと思うけど。
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGだってVB厨はVBしか使えないだろ(ワラ
そんな奴らが他言語でかいて比較、なんてやめてくれ。
0051デフォルトの名無しさん
NGNG簡潔に記述出来る言語は無い。
しかし、これは完全にアセンブラとは逆の方向を行ってて、アサインメント
の際に何が起こるかをトレースすることは関知せず結果のみを重視する立場
を取る。但し速度についてはPropertyを使う場合は結果主義なのだから、
出来るだけ目を瞑らなければならない。
高速化を意識し過ぎるとVBの本来の持ち味を殺してしまうことになるな。
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNGおまえ「必死だな」が言いたかっただけちゃうんかと小一時間(ry
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNGそう?
まだあるような気がしないでもない。つか、激しく希望。
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG>>60のような厨を規制しろ!
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGこれは関数なのでIIf(A,B,C)のA,B,Cがすべて評価される。
これよりもIfを使ったほうが速い。
If A Then B Else C の場合、評価されるのはAとB、もしくはAとC。
0064デフォルトの名無しさん
NGNG自身を否定するようなことは言わないように
0065デフォルトの名無しさん
NGNG必要になりそうでつ・・・
0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNGVB (詳細最適化): 9784
Delphi : 9854
DelphiはVBより遅いのか。終わったな。
0068デフォルトの名無しさん
NGNGしらないのにやるなといいたい>>5
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGスピードは設計とアルゴリズムがすべてです。
しいて言うなら、MMXの方がよっぽど差がつくよ。
0071デフォルトの名無しさん
NGNG速度以外の優劣もわかりそう。
0072デフォルトの名無しさん
NGNG証明してください
VBは遅いって言ってるやつも早いって言ってるやつも机上の空論して楽しい?
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG>漏れは Delphi をよく知らないので改良の余地はあるかも知れぬるぽ。
VBが負ける可能性あり
0076デフォルトの名無しさん
NGNG007775
NGNG0078デフォルトの名無しさん
NGNGVBつかMSのコンパイラ全般に言えるけど、ひとつの関数内での最適化は
明らかにとは言わないけどかなりBorより上なので、
単純なベンチマークだと.NET含めてDelphiじゃ勝てんよ。
(文字列処理を多く行うとか、相手の苦手なところを突けば別だが)
逆にDelphiに勝たせたければ、__fastcall規約と上手なレジスタ割りつけを活かせるような
複数の関数を何度も呼ぶようなコードで比べればいい。
コンパイラに傾向があるのはどうしようもないっしょ。
0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNGMID$は新しい文字列を作るので遅いのだろうけど、ならば、
S$のI文字目が"A"かどうかを比較するなら、
INSTR(I, S$, "A")の方が速いのだろうか???
(もちろん、INSTRがI以降の文字全てを走査する事を含めた上で)
0081デフォルトの名無しさん
NGNG関数に飛ばした時点で10倍遅い
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGVB厨必死だなとか言ってるやつが必死なんじゃないの?
高性能なマシーンを使えばいいんじゃないの?
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGなぜならVBの文字列にはデータ長が埋め込まれているため。
0087デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1044116274/
によるとDelphiは100分の1以下の速度になるそうです。
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNGそれはアルゴリズムを変化しているからであって、
「Delphiが」ではなく「すべてのものが」速くなるって事。
勘違いせぬように。
0090デフォルトの名無しさん
NGNGしかしDelphiだけループカウンタをグローバルにしている事に作為的な物を感じる。
0091デフォルトの名無しさん
NGNGん?OLEのBSTRは、空のときはNULLでもいいので、
仮に言語が""の代入はNULLをセットしてるとしたら、= ""は単なるポインタ比較で良くて、
Lenの方がSysStringLenの呼びだし分遅くならない?
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG俺もそう思う。
そこだけ改善してもう一度やってほしい。
0094デフォルトの名無しさん
NGNGしかし、アルゴリズムの改善で100倍も速くなるのなら、そもそもテストの意味がないような・・・
>>89
といいながら、Delphi使いなら、100倍速いコードを素早くかけるという事でもあるわけで、
・・・C屋がいればもっとかんばるのかな?
0095デフォルトの名無しさん
NGNG自分の言ってるアルゴリズムを使ってないってのが笑える。
0096デフォルトの名無しさん
NGNGPublic Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Main()
Const MAX_PRIMES As Long = 20000
Dim MaxN As Long
Dim Primes(0 To MAX_PRIMES) As Long:Dim ETbl() As Boolean
Dim I As Long, J As Long:Dim PrimeCnt As Long:Dim TimeCnt As Long
Primes(0) = 2:Sleep 1500:TimeCnt = timeGetTime
MaxN = Round(10 * MAX_PRIMES * Log(MAX_PRIMES))
ReDim ETbl(0 To MaxN)
For I = 2 To Round(Sqr(MaxN))
For J = 2 To (MaxN \ I)
ETbl(I * J) = True
Next J
Next I
For I = 2 To MaxN - 1 Step 1
If Not ETbl(I) Then
Primes(PrimeCnt) = I
PrimeCnt = PrimeCnt + 1
If PrimeCnt > MAX_PRIMES Then Exit For
End If
Next I
TimeCnt = timeGetTime() - TimeCnt
MsgBox TimeCnt
End Sub
0097↑
NGNGVBで書いてみたけど、家のマシンでの結果は9960→1460
でもここでDelに出来てVBに出来ないことが出てきているので、ある意味比較にならん。
今度はCで書いてみるかおもったが眠いので寝る。
009892
NGNG0099デフォルトの名無しさん
NGNG言語ごと書いて、実行速度を調べてくれ。
0100デフォルトの名無しさん
NGNGある程度飛び飛びでもなる。
だけどどこかで線引きがあると思う。
0101デフォルトの名無しさん
NGNG使えない言語に手だしてまた凡ミスするのはやめてくれよ。
0102デフォルトの名無しさん
NGNG・不要なDebug.Printを取り除く
・数値型は値渡し強制
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNGOption Explicit
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Sub Main()
Dim i As Long : Dim t As Long : Dim longtext As String
longtext = String(10000000, "A")
t = timeGetTime
For i = 1 To Len(longtext)
If Mid$(longtext, i, 1) = "A" Then
Call dummy
End If
Next i
MsgBox timeGetTime - t
t = timeGetTime
Dim b() As Byte
b = longtext
For i = 0 To UBound(b) Step 2
If b(i) = 65 Then
If b(i + 1) = 0 Then
Call dummy
End If
End If
Next i
MsgBox timeGetTime - t
End Sub
Private Sub dummy()
End Sub
0106103
NGNG0107デフォルトの名無しさん
NGNGおれ?おれはもちろん後者だよ(w
0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNG型名を調べる人がいるが、TypeOf 〜 Isを使用したほうが速い。
あるインタフェースを継承しているか調べるときにも使えるしね。
0110デフォルトの名無しさん
NGNG(σ・∀・)σ 娘です
http://www.k-514.com/img1.html
0111デフォルトの名無しさん
NGNGPaintイベントを使用するとオブジェクト全体の再描画が必要なので
サブクラス化してWM_PAINTに反応して必要分だけ再描画する
とかあげてもいいの?
まあそこまでしてVB使うなというのが正解なわけだが。
0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNG「For i = 1 To Len(longtext)」
ループ内でlongtextの長さが変更されないのならば、
ループの前でLen(longtext)を変数に代入しておけばよいのでは?
0114デフォルトの名無しさん
NGNG>>22
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG半分同意だけど、VBはAPIを使うものではないというのは頭が固いよ。
今のプログラミングってのは大部分は楽に作って、
パフォーマンスが必要なとこのみ集中して改良するもんだし。
APIを使えば速いけどVBはAPIを使っちゃダメだから
VBは遅いとかわけのわからないことを言わないように注意。
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNG>VBはAPIを使うものではないというのは頭が固いよ。
誰もそんな事は意っていないようですが。莫迦ですか?
0119デフォルトの名無しさん
NGNG>>112はもちろん言って無いけど、そう言うやつがちらほらいるんだよ。
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNGおまえがな。
0122デフォルトの名無しさん
NGNG0123ああああああああ
NGNG0124デフォルトの名無しさん
NGNG>・数値型は値渡し強制
え・・・なんで?
数値はたしかにメモリ消費が少ない場合が多いので値渡しでいいが
強制する必要はないと思いますが。
2つ以上の戻り値を返したいときとか参照渡しにすればグローバル変数を
作らなくてすみますし。
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNGVB5が出たときにみんな期待したんだけど
どの雑誌だかでテストしてガカーリということだった
演算よりリソースのロードとかで
アプリの起動に時間が掛かり過ぎるという話も聞く
0127デフォルトの名無しさん
NGNGへ〜そうなんだ。
そろそろVCの他にもなんか言語覚えようかなあと思ってたけどイマイチなのかなVBって。
0128デフォルトの名無しさん
NGNGオレはネイティブコードコンパイル時に
デバッグ情報の生成→VCデバッグができるようになったことがうれしかった。
だからそこまでするくらいならVB使うなって>自分
0129デフォルトの名無しさん
NGNGとてもVCが使える人間とは思えないな。
その口調。
0130デフォルトの名無しさん
NGNG何が出来ないの?
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNGリンカをいじくれば、作れるという罠。
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNGわたし、VBしか知らないんです。
0140デフォルトの名無しさん
NGNGVCの場合、ちまたにあるC/C++の資産をそのまま使える事、
そして何より、そのコードからテクニックやアイデア、思考方法を学べる
事が一番大きい事でしょうね
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNGそして何より、そのコードからテクニックやアイデア、思考方法を学べる事がいちばん大きいでしょうね
0143デフォルトの名無しさん
NGNG買ったコンポーネントにはコードはついていませんでした。
どうやってちまたにあるコードを手にいれるか教えて下さい。
0144デフォルトの名無しさん
NGNG140,142さん、わかりました。
ありがとう・・・・・
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGスレ違いだろ。そんなに真実を語られるのが怖いのか?
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG証明されているわけで、何を言われても
負け犬の遠ぼえにしか聞こえんわけだが。
0149デフォルトの名無しさん
NGNG必死で悪いか!
ばーか。
0150デフォルトの名無しさん
NGNGあふぉですか?
あふぉですね。
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNGエラトステネスではないけど、コードのパフォーマンステストには
なってるからね。なんかDelphiは(アルゴリズムを)改良したら
もっと速いとか(そりゃ当然でしょ)言ってるけど、同じようにVBも
改良したら(>>96)同じように速くなるし。
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGおいおい。アーリーバインディングでもOLEはOLEだろ?
なに言ってんだか。
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNGインディアン研究家である俺の探求心をくすぐったぜ。
0160デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG別にアーリーでも開発は楽だろ。どちらにしろHRESULTはいらんわけだし。
もしかして参照設定が手間だというのか?
間違った型を入れようとしたらエラーになるし、コード補完も利用できるし。
むしろ逆にアーリーの方が開発が楽だと思うが。
0163デフォルトの名無しさん
NGNGループ変数をグローバル変数にし、
エラトステネスのふるいを勘違いしてる奴を信用しろと?
ひとつだけの偏った結果で全てを判断しろと?
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNGじゃあ二つ目の結果を出したら?
結果がなけりゃ所詮口だけだよ。
0166デフォルトの名無しさん
NGNGわたしが馬鹿でした…
0167デフォルトの名無しさん
NGNG別に馬鹿とかどうでもいいよ。
結果に基づいた反論が出たほうが面白いんだけどね。
まあそれが出るまでは>>5が有効と。
つーかスレ違い。
各言語パフォーマンス比較のスレでもあったほうがいいんじゃないかな。
0168155
NGNG表さなきゃいけなくなることが起こるのが嫌>アーリー
0169デフォルトの名無しさん
NGNG意味わからん。具体的にアーリーならどうでレイトならどうなるから嫌だと?
あんたが勘違いしているだけじゃないのか?
0170デフォルトの名無しさん
NGNGVC++(最適化が可能な上位版)もVBも持って無いので比較はできないが、仮に同じ割合で速くなると仮定して
>>5のDelphiを5%引きすれば、トップになっちゃうよ…
まあ俺も流石にそれは無いだろうと思っているので(Delphiの最適化が賢く無いのは知ってるから)、
多分メモリ配置やキャッシュか何かが影響してるのとは思うが、
それなら尚更、誤差程度の差で騒いでた連中は馬鹿らしいな
実際には、あの短いコードで優劣が出る程の差は、どのコンパイラにも無いと思う。
コンパイラが最適化できるような項目がそんなに無いもん。もっとややこしいコードを使わないと。
0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNGDelphi知らんのだが>>5はローカル変数じゃないのか?
0174デフォルトの名無しさん
NGNGオブジェクトが複数のインターフェースを持っている時、
いちいち別の型の変数にQueryInterfaceして、Releaseも個別にやらないといけないのが嫌なのでは?
0175デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG本題に戻りませう。
0178デフォルトの名無しさん
NGNGVBではRelease相当は自動でやる。QueryInterfaceは他の型の変数への代入。
それはいいとして、レイトバインドじゃインタフェースは呼べない。
レイトバインドで呼べるのはそのクラスのものだけ。
インタフェースを呼ぶときはインタフェース型に代入してからじゃないと呼べない。
そうしないと、同じ名前のメソッドがある別の複数のインタフェースを継承したクラスで
どちらを呼べばいいかわからないでしょ。
0179デフォルトの名無しさん
NGNG(結果が決まった時点で後の評価をおこなわない)
If A And B Thenとするよりも、
If A Then If B Thenとするほうが速いです。
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNG処理部を2度書けってか?
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG言語毎に用意されたライブラリを使う事で、初めて目に見える差が出てくるモノだと
思ってますた。
Asm、C/C++以外で速度重視のプログラム組んだ事無いのでよくわかんないすが。
0184デフォルトの名無しさん
NGNGスマンが教えてくれ。どうやって?
0185デフォルトの名無しさん
NGNGライブラリも何かしらの言語で書かれているものですけど?
0186デフォルトの名無しさん
NGNGそりゃそーだ。でもライブラリは言語の持つ思想を重視して作られるから
言語毎に特色ある作りになるでしょ?そこに差が生まれる。
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG自作のライブラリ == 汚れたふんどし
どちらもはきたくない自分はフリチンでなんとかやってます。
0189デフォルトの名無しさん
NGNG/(ヘ っ )ヘ
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGIf A Then
If B Then
処理
End If
End If
処理は一回じゃんか?
えっ? 偽が無いって?
処理部を関数にしろ。
えっ? 関数が二つあるのが嫌だって?
goto使え。
If A Then
If B Then
処理(真)
GoTo Next1
End If
End If
処理(偽)
Next1:
えっ? Orはどうするかって?
工夫すればできるだろ。
予備知識としてドモルガンの法則でも調べとけ。
忠告しておく、見難くなるので使うのは
パフォーマンスが必要なときだけにしろよ。
0193デフォルトの名無しさん
NGNG市販のライブラリ == 市販のふんどし
自作のライブラリ == 自作のふんどし
の間違いだろ?
0194デフォルトの名無しさん
NGNG上手い例えだな
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNGは
>ショートカット演算子ではない
の説明じゃなくて
>ショートカット演算子
の説明だったのね
検索してみたら意味が逆だったからちょっとハマっちゃったよ
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNGそんなコードを書くぐらいなら、喜んでパフォーマンスを犠牲にする。
0201デフォルトの名無しさん
NGNGそれ本当に速くなってるの?
0202デフォルトの名無しさん
NGNGAが真の場合は変わらず。Aを先にもってくるかBを先にもってくるかの判断は
>>192が統計的手法を駆使して決定している(w
0203デフォルトの名無しさん
NGNGそれ当然の話だし。C言語でもどちらを先に持ってくるか考えるよ。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGまたずいぶんと深いところに・・・
0206デフォルトの名無しさん
NGNGでもAとBが長ったらしい処理をおこなう関数とかだったら
パフォーマンスを重視するでしょ?
要は書き方で選ぶんじゃなくて場合で選ぶべきだよ。
パフォーマンスとなんとかはトレードオフなんてVBに限らず一般的ことなんだから。
0207デフォルトの名無しさん
NGNGなんで? 片方が評価されないことがある分速いでしょ。
0208デフォルトの名無しさん
NGNGでは、後者の方が早い。
でもVBだと、
a = 0 と a = a xor a
なら、前者の方が早い。
0209デフォルトの名無しさん
NGNG今では そのアセンブラコードはほぼ同じ負荷だけど、前後のコードで違ってくるよ
0210デフォルトの名無しさん
NGNGどうすればいいですか?
全体をアセンブラにされてもたぶんわからないので関数単位で
どの関数はこういうコードになるっていうのを知りたいです
0211デフォルトの名無しさん
NGNGVB.NETですか? それならVS上で関数の先頭でブレークポインタしかければ見えるでしょう
VB6だとちょっと厄介です VCは持っていますか?
0212デフォルトの名無しさん
NGNGデータが破壊されたりゴミが紛れ込んだりするとかは既出?
中途半端にAPI(標準DLL)を使っても結構オーバーヘッドがあったりする。
0213 ◆sZMOg20d0E
NGNGそもそも 配列で 20000 というのは異常だと考えられる。
C言語では このような巨大な領域は 先にメモリを確保してからつかうと予測するが これがされていない。
これは、明らかに Cの性能を明らかにはっきさせないためであり、また、
VBのDLLのロード時間を確保しているだけの、いわば VBの都合の良いソースである。
というか無駄。
また、テスト環境もいろいろと準備して、100回以上稼動させ、それに基づき
結果を公表してくれ、メモリや、CPUがしょぼい環境では どちらが速いか
その点も興味がある。
数値の信頼性がまったくないので、話にならない。
0214デフォルトの名無しさん
NGNGたぶん 先頭のSleepはそこでタスク切替をさせて 多少なり測定精度をあげたい為でしょ
ただ、実行時間が何秒とかなら、あんまり意味ないのと、1500もは必要ない
配列でローカルに20Kは 5年前なら異常だけど、今はもう普通でしょ。
あんまり誉められないけどね。
それから、この話題は
Delphi=ボーランドの【オ ナ ニ ー】では?
http://pc2.2ch.net/test/read.cgi/tech/1044116274/
に移ってるように思うのだが
0215 ◆sZMOg20d0E
NGNGC使いとして言わせてくれ、
ループ中にある goto文は、continue で代用可能だ。(というか continue だ)
C言語において gotoは、予測不可能なコードなので、最適化がほとんどかからない。
(計測結果の Debug と Release があまり変わらないのはそのためだ)
なぜ、このようなことをするのか その意図は なんだろうか。
このようなソースを書くPGの基本的な能力をうたがわざるをえない。
あと、エラトステネスのふるいだけが、アプリケーションの速度を測るものさしと
勘違いしておられるのでは、PGの世界から足を洗っていただきたい。
VBは あなたにとって良い言語かもしれない。
だがよく考えてくれ、そのVBを解析、実行しているものは、なんだろうか。
根本的な知識から勉強し直すことをお勧めする。
Delについては・・・すまん。
0216デフォルトの名無しさん
NGNGよーくコードみないといけない
ここで、continueは使えない
gotoを減らす為には、結構複雑な対策が必要になる。
それから、エラトステネスのふるいと書いているが、これはエラトステネスのふるいではない。
エラトステネスのふるいなら、普通に書いても実行時間は1桁以下短くなるだろう。
実際Delphiで書き換えたコードは1/100以下になっている。
0217デフォルトの名無しさん
NGNGTryPrime:
for(i = 0; i < PrimeCnt; i++)
{
if(CurNum % Primes[i] == 0)
{
CurNum++;
goto TryPrime;
}
}
Primes[PrimeCnt] = CurNum++;
//------------------------------
for(i = 0; i < PrimeCnt; i++)
{
if(CurNum % Primes[i] == 0)
{
CurNum++; //<-- ほんとは CurNum+=2; としたくてしょうがないのだが
i = -1;
}
}
Primes[PrimeCnt] = CurNum++;
0218デフォルトの名無しさん
NGNG1/100以下なんてデータはどこにもないけど?
0219デフォルトの名無しさん
NGNGじゃあ 実行ファイルを作ったからデータを作ってみて
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1050452299_2/TestCon.exe
0220 ◆sZMOg20d0E
NGNG失礼、ボーッっとしかソースを眺めていなかった、たしかに continue は使えない。
下の方でも ++ してたのね。
>>217
i=-1; とあるが、無限ループに入ってしまった、
(いや、長かったんで途中で終了させたんだけどね。)
おそらく i=0; だろう。
高速化の手段として、
テーブル作るってのは・・・ながれからいって ルール違反かな?
あと、gotu文についての最適化についてだが、これは私のあやまりだ。
一定の条件のもとでの話だ、今回のような単純なループでは話が違ってくる。
完全に私のミスだ。
最近ミスが多いな、気をつけようw
0221デフォルトの名無しさん
NGNG他言語でも有効な手段を使っても差は縮まらないと思われ。
REM それすらできないのがVB厨だという意見もあるとおもうけど
0222デフォルトの名無しさん
NGNG作ってみてって、あのさ、データ無いのに100分の1になったとか
言うのやめてよ。そんなんじゃ全然信用できないじゃん。
それとEXE単体でおいてもあやしすぎて実行できません。
0223デフォルトの名無しさん
NGNGfor 文のループで i++ されてるから i=-1; じゃないと正しくないよ。
ただし、ループ変数に代入してしまうと、ループ変数がスタックに割り付けられてしまう可能性が多くなって
逆に遅くなると思うけどね。
0224デフォルトの名無しさん
NGNGではソースを
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1050452299&res=2
データ自分で測ってみたらいいと思うけど
自分の環境では、
>>5 のコードは11203 >>219のコードは103だったよ。
0225 ◆sZMOg20d0E
NGNGたしかに根本的な問題ですね。
計算方法は限定されているわけだし、特に、最適化する意味がないかもしれない。
答えをまんま配列に格納したほうが、よっぽどマシな解決方法かもしれない。
>>223
そうなのですか、処理的な流れしか目に付けてなかったもんで、
ついつい さっさとソース化してしまいました。
計算結果の内容は確認しておりませんでした。(マテ
また、タイプミスしてるし・・・
もう、今日は閉店や。
0226デフォルトの名無しさん
NGNG答えをマンマ配列ってのはルール違反だろうけど 配列を使って求めるのはアリでしょ
それで >>224 より速くなるなら書いてみたら?
>>224も、あと2〜3割は速くなると思うよ。
0227デフォルトの名無しさん
NGNG1/100ってのはDelオナニースレの奴ね。
>>5の奴の結果が1/100になるっていうわけじゃないよ。
アルゴリズムが違うわけだから。
0228デフォルトの名無しさん
NGNGでも、結果は同じだよ。
0229デフォルトの名無しさん
NGNG残念ながらうちの環境では1/100にはならなかった。まあ改善比率はどうでもいいんだが。
>>219コードとそれ同等のVBコードの実行結果。
Delphi 14231→273
VB 14596→432
VBは過去スレに>>219同等のコードがないようなので一番近いコードの>>96を修正した。
ここはVBスレなのでVBスレらしくVBの話。
ETblを>>96のBooleanからByteにしたらうちの環境で100msほど速くなった。
キャッシュの効果だろうか? Delphiのコード同様、配列をbitで保持したら
どうなるか興味がある。コードが増える分遅くなると思うが。
時間があればやってみるかもしれない。
0230デフォルトの名無しさん
NGNGSub Main()
Const MAX_PRIMES As Long = 20000
Dim MaxN As Long
Dim Primes(0 To MAX_PRIMES) As Long: Dim ETbl() As Byte
Dim I As Long, J As Long: Dim PrimeCnt As Long: Dim TimeCnt As Long
Primes(0) = 2: Sleep 1500: TimeCnt = timeGetTime
MaxN = Round(10 * MAX_PRIMES * Log(MAX_PRIMES))
ReDim ETbl(0 To MaxN)
For I = 2 To Round(Sqr(MaxN))
If Not ETbl(I) Then
For J = 2 To (MaxN \ I)
ETbl(I * J) = True
Next J
End If
Next I
For I = 2 To MaxN - 1 Step 1
If Not ETbl(I) Then
Primes(PrimeCnt) = I
PrimeCnt = PrimeCnt + 1
If PrimeCnt > MAX_PRIMES Then Exit For
End If
Next I
TimeCnt = timeGetTime() - TimeCnt
MsgBox TimeCnt
End Sub
0231デフォルトの名無しさん
NGNGコードが大きくなっても、キャッシュヒットの効果は絶大だよ。
でも、Delのコードも100倍にならないという事は、
キャッシュが余りない環境なのかもしれないね
試しに MaxN= 224737+512って決め打ちでやってみたらどう?
作業メモリを少しでも小さくするといい。
さらに、2の倍数を最初から取り除くとか
0232デフォルトの名無しさん
NGNG信じられないかもしれませんが、Delのコードはさらに 1/10になりました。
>>5からの比較だと 1/1000 になっています
0233デフォルトの名無しさん
NGNGコードのチューニングするよりアルゴリズム練り直せゴラァ
0234デフォルトの名無しさん
NGNGVBも同じく1/10になってるよ。
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG本来の話題に戻りましょう。
0237デフォルトの名無しさん
NGNG起動時のDLL読込
実行時のライブラリ内の処理
ネイティブコードコンパイルで解決できないのはこの二つ?
0238デフォルトの名無しさん
NGNGボトルネックは、その遅い部分に慣れて遅くて平気な感覚を覚えてしまう所でしょ。
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG文字列を、文字+列として扱うべきなのに、文字列として扱ってしまう癖が付いちゃう事だろうな。
たとえば、DelフサギコがVBをやってからか 文字列を文字列として扱うようになって
それをDelphiでやってパフォーマンスが出ないと騒いでた。
文字+列として考えれば、確立されている色んなテクニックが使え、文字列として処理
した場合の10倍100倍ののパフォーマンスが得られる。
もっとも、短いと判ってる文字列を文字+列でいちいち処理するのも意味の無い事なんだけど
そこらへんのバランス感覚必要だよね
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNGいや煽りじゃなくて、
速いアプリが作れるかどうかは、数割の差しかでないコンパイラの差じゃなくて、
速いアルゴリズムを実装出来るかの問題でしょ。
ライブラリ部分(OCX含)に引きずられて、速いアルゴリズムが組めないから結果遅くなってしまうのが真実でしょ。
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG速いコードを書くにはそれなりに必死に勉強しないとダメだよ。
ただ、方向性を間違えないようにね。
0245デフォルトの名無しさん
NGNG>>238といっている事がずいぶん違うが。
始めからそう言っておけば煽りだと思われずにすんだのにね。
> ライブラリ部分(OCX含)に引きずられて
ライブラリが遅いとは誰も言って無いんだが。
つーかライブラリはCとかでかかれていると思うよ。
0246デフォルトの名無しさん
NGNG違うよ。
ライブラリが遅いんじゃなくて、ライブラリやOCXの構成に引きずられてしまうって事を言いたいの。
他の言語に比べてものすごく高機能=ハイレベルで、しかもそれ単独ではそれなりの性能なんけど、
そのせいで、それをVBコードで繋ぐだけに終始してしまう。
他のツールのように、データ構造を先に作って、アルゴリズムを考えて、そして用意された低機能
なライブラリを組み合わせて構成するという方向に行かない。
VBだってこういう組み方をすれば、まともな速さのアプリが組める筈なのにね。
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGライブラリやOCXの構成ってなにを言いたいかわから無いんだが、
OCXやそれと同等のCOMはVB以外にもC++やDelphiでも使え、
実際に多くのところで使われているんだが。
たとえばVBにあるWebBrowserコントロールは
IEコンポーネントブラウザとして、VCではCHtmlView、
BCBではTCppWebBrowserとして同じ物が使われているんだが。
0250デフォルトの名無しさん
NGNGだから遅いものはできないって結論になるんだけど。
実際に極端に遅いものってないでしょ。
0251デフォルトの名無しさん
NGNG巧いね。
>>248-249
ニュアンスが判ってもらえなくて残念だ。俺は教師向きじゃないのだろう。言葉で導く事は出来ない。
>>250
データ数が少し増えれば、極端に遅くなるのがVBのデフォルトのように思われてるぞ
0252デフォルトの名無しさん
NGNGだから思うのが勘違いなんだって。
プログラムにおいて、論理的に理由を
説明できないことは間違いだよ。
0253デフォルトの名無しさん
NGNGただ自分の考えがまとまってなくて、
思い込みだけで発言しているからだろ。
0254デフォルトの名無しさん
NGNGそのWebBrowserコントロールでタブ式の2CHビュアー作ってごらん
確かにテキストをひらって来るのも簡単だし、WebBrowserで表示するのも簡単だし、
それぞれは別に遅くない。
キミらの感覚で作ったビューアが高速になるかどうか見せてくれ
0255デフォルトの名無しさん
NGNGよくわからないけど、ちまたにあるVB以外で作られている
ビューアと同じ程度の速度にはなるでしょ。
実際は差があるかもしれないけど体感は出来ないよ。
もっとも初心者が作ったらどんな言語でも遅くなるけどね。
0256デフォルトの名無しさん
NGNGちまたにあるVB以外と同じスタイルで作れば同じ速度になる。
でも、>>1のようなスタイルが高速化だと思って作ったんじゃ話にならない程もっさりしたものが出来るだろう。
0257デフォルトの名無しさん
NGNGそういうことでしょ?
大掛かりなライブラリは大抵それぞれに最適なデータ構造を取ってるから、
複数繋ごうと思えば妙なオーバーヘッドが出てきて、結局自前でデータ構造を用意した方が速くなったり。
0258デフォルトの名無しさん
NGNGVB.NET だと Chars で扱えるから多少マシになるかな
でも、やっぱりUnicodeだから テーブル索引型状態遷移駆動のテクニックが使えないんだよな
0259デフォルトの名無しさん
NGNG0件
UNICODEごときで使えなくなるテクニックって(藁
0260デフォルトの名無しさん
NGNG不思議だ。速いテクニックと遅いテクニック。
速いテクニックを使っているのに遅くなるとは。
そこんとこ論理的に説明してもらいたい。
0261デフォルトの名無しさん
NGNG先にアルゴリズムを検討しろって事でしょ。
その前のは、採用可能なアルゴリズムがライブラリによって縛られてしまうからそこが問題だって事でしょ。
それくらいは読み取ってやれよ。
0262デフォルトの名無しさん
NGNGそれから他人のふりすんなって。
0263デフォルトの名無しさん
NGNGそうじゃない。 >>1のいうテクニックに問題があるんだ。
>>5 を見てごらん、
IDE と VB最適化で 5倍も違うね? でも5倍の差はデータ数が増えても5倍だ。
しかし、アルゴリズムを修正すれば1000倍になったでしょ?
この差はデータ数が増えれば増えるほど大きくなるのは知ってるね?
通例では何も考えずにコードを書くと、データ数の2乗で重くなるとか、ヘタなコードだと2のベキ乗で重くなるとのアレね。
5年で10倍の法則は知ってるね?
5年で10倍になるんだから今遅くても問題ないというのは逆で、
5年でCPU速度と容量の両方が10倍になるんだから、遅いアルゴリズムだと5年先には10倍遅くなるんだ。
逆に>>1のいうようなテクニックは5年先には全く不要だ。
ネイティブコードコンパイルや最適化チェックはそりゃ問題ないよ。
でも、他のテクニックは明らかにコードの可読性を落とす。
コードの可読性が落ちれば修正容易性が失われ、他のアルゴリズムを検討する余地を無くしてしまう。
悪影響しかないんだよ。
0264デフォルトの名無しさん
NGNG読解力なさすぎ。
なんかずれてるな。
0265デフォルトの名無しさん
NGNGなにを当たり前の事言ってるの?
それはプログラム全般の話でしょ。
ここはVBのスレだよ。>>1の内容は+αのことでしょ。
他の言語でも変数はローカルにしろとか多重配列のかっこの順番はとか
キャッシュに入るように工夫するとかあるよね。
それと同じ事だよ。
あと>>105で出てきてるけどStringをByte配列で扱うことで10倍になっている例があるよね。
画像処理も一ピクセルずつ関数で取得するよりかもByte配列に転送した方が大幅に
処理スピードが上がると思うよ。
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNGふう。 俺も教師じゃないからここまでが限界か。
Stringについては、確かにVB6までの文字列は 文字+列として扱う方法が無かったから
そういう方法に慣れれるのは大事だし、そういう書き方の方が判り易いからまあいいと思うよ。
ただ、VB.NETにまで持ち込むのはどうかな。
それから、
他の言語で配列の括弧の順番レベルの高速化のテクニックなんて検討もしないよ。
画像処理も、まずはそんな所よりFFTやDDAを検討するでしょう。
0268デフォルトの名無しさん
NGNG最後にはそこにたどりつくんだけどね。
まだまだだな。
0269デフォルトの名無しさん
NGNG0270山崎渉
NGNG0271デフォルトの名無しさん
NGNGVBでDirectX使えるし、いいゲームを作るための制限にはならないよ。
0272デフォルトの名無しさん
NGNGVBで速いソフトを作る、最適化するというのがこのスレの趣旨
それ以前の最適化は当然済んでいるのが前提
もちろんそれらの話題は興味を集めるだろうし君がその知識を披露することを
喜ばない者は少ないだろう
可能ならばそれらを使いさらにVBに最適化したコードを示してはくれないだろうか
そうすることはVBコミュニティにとってより建設的だと考える
0273デフォルトの名無しさん
NGNG速度が求められるコアな部分では標準のライブラリは使用しない。C++では組み込み部さえ
使用しない事もある(極限られた状況下ではあるが)。
なぜならC/C++ではより高速なライブラリを自作する事が出来るからだ。
速度を求めた場合、C/C++で書いている者は他に逃げ道がない。唯一アセンブラが存在するが
世に出ているCコンパイラよりも優秀なコードを書ける、と自信を持って言える者以外は手を
出すべきでは無い。大抵の場合C/C++で書いたコードよりも低速になる。
さて、VBしか扱えない者が、標準で用意されているライブラリの速度に満足出来ない場合
どうすれば良いのか?
そ
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGお決まりだが、処理するときに非表示する。
何の話だったか忘れたけど。
0276デフォルトの名無しさん
NGNG出来るだけコードを書かない。
0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGといっても文字列を使わないようなアプリにVBは最初から不適合。
VB6 なら より世界が狭くなるのを我慢してVB.NETに移行するか、少しガンバッテDelphiやったら?
0279デフォルトの名無しさん
NGNGVB.NET なら文字列の扱いは改善されてる。
ただし、どっちにしても今迄通りの使い方をしてはダメ 。
構文解析/オートマトン/状態遷移 とかをキーワードに勉強して、文字列のホントの扱い方を勉強しないとね。
0280デフォルトの名無しさん
NGNG低レベルの高速化を議論してるところに、なんでこんなキーワード
がでてくんだよ。
0281デフォルトの名無しさん
NGNG> 文字列を使わないようなアプリにVBは最初から不適合。
結局自分基準で制限を作って不適合っていっているのと同じじゃん。
文字列として扱うか、文字の列として扱うか。適切なのを選べよ。
0282K仲川(^^)g
NGNG0283デフォルトの名無しさん
NGNG低レベルでって事は、プリミティブな部分からアルゴリズムを考慮して作る事を言うんだよ
低レベルで高速化って言うならまず、アルゴリズムやれや
0284デフォルトの名無しさん
NGNGコンピュータ用語の「低レベル」の意味を調べましょう。
0285デフォルトの名無しさん
NGNG>272 名前:デフォルトの名無しさん[sage] 投稿日:03/04/17 18:43
> >267
>VBで速いソフトを作る、最適化するというのがこのスレの趣旨
>それ以前の最適化は当然済んでいるのが前提
らしいし。
0286デフォルトの名無しさん
NGNGで結論が出てるじゃない。 C のような事がしたいなら Cで書くべし。
そろそろ Cで #define begin { マクロ書くのと同じくらいアホな事やってる事に気付け。
0287デフォルトの名無しさん
NGNGなんでそういう自分基準でわけのわからないこというかなぁ。
はっきり言って全然違う。
0288デフォルトの名無しさん
NGNG問題: 320x240 ピクセルの画像に64x64フィルタ操作を実施せよ
例えば、微分フィルタ=輪郭抽出フィルタというのは
0 -1 0
-1 4 -1
0 -1 0
という 3x3フィルタを掛算すればよい
0289デフォルトの名無しさん
NGNGこんなことを考えなくてはならんほど遅いコードしかかけんのか?
0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNGならないかを知らない奴らが痛い。
0292デフォルトの名無しさん
NGNGそして比較結果を出してくれ。
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNG素数 "列挙" アルゴリズムを極めるスレ
http://pc2.2ch.net/test/read.cgi/tech/1018657457/
0295山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0296山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0297デフォルトの名無しさん
NGNGおまえらな、マ○コマ○コ連呼してんじゃねーよ
0298デフォルトの名無しさん
NGNGおまえさ、もう少し大人になろうぜ。
0299297
NGNGVBでは実装できないけど他言語では実装できる(高速化用)アルゴリズムってどんなのがある?
実装が難しいとか実装するとかえって遅くなってしまうパターンまで含めて
0300デフォルトの名無しさん
NGNG固定サイズのオブジェクトを大量に必要とする時allocatorを自前で用意するとか?
後は、charが無いとか、その辺から探せば幾つか出てくるかも。
0301デフォルトの名無しさん
NGNG思い出したのはシフト演算が無いんだよね。
あまり使わないけど乗除算の高速化にシフト演算を使おうとして結局*2, /2してしまう罠
0302デフォルトの名無しさん
NGNGどちらが速いんだろう?
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG文字列がUnicodeだからByteじゃなく16bitが欲しいね
0305デフォルトの名無しさん
NGNGポインタが使えないと、ソートさせるのも一苦労
0306デフォルトの名無しさん
NGNG配列のインデックスを格納する配列を用意するといいよ。
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNGバブルソートしか使ったこと無いけどさ
0309デフォルトの名無しさん
NGNGんなわきゃない。クイックソートは、たとえ再帰が出来なくて
ローカル変数すらない言語でも実現できる。
もちろんVBはどちらもできるので普通に実現できる。
0310デフォルトの名無しさん
NGNGCOMDLG32.OCXとMSVBVM60.DLLとVB6JP.DLLをLZHに詰め込んで配布したらまずいでしょうか?
ソフトの種類は、シェアウェアソフトです。
0311デフォルトの名無しさん
NGNGファイルサイズでかすぎ。糞。
0312デフォルトの名無しさん
NGNG違うよ。 バブルソートでも同じだけど、それだと中身=インスタンスの交換になるでしょ。
ポインタでソートすれば、ポインタだけのソートだけら インスタンスサイズ÷ポインタサイズだけ速くなる
0313デフォルトの名無しさん
NGNG>>310
標準インストールの場合
C:\Program Files\Microsoft Visual Studioに
REDIST.TXTというファイルがある。
これを見ろ。
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNGよっ!さすがVB厨。
0316デフォルトの名無しさん
NGNGポインタテーブルをソートするのも配列のインデックスをソートするのも同じです。
むしろ、ポインタが(32bitCPUでは)32bit強制なのに比べて
配列のインデックスはデータ数にあわせてbit数を減らせるので
ポインタより速くなる可能性もあります。
0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNG遅くなる可能性では?
0319デフォルトの名無しさん
NGNGよっ!さすがVB厨。
0320デフォルトの名無しさん
NGNG馬鹿には変わりない。
0321デフォルトの名無しさん
NGNGキャッシュに入る確率が上がるので
速くなるでしょう。
0322310
NGNG問題ないことが分かりました。
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGだからといってVBが糞とは全く思わないけども。
0325デフォルトの名無しさん
NGNGだからVBは糞だと思う。
0326動画直リン
NGNG0327デフォルトの名無しさん
NGNG0328デフォルトの名無しさん
NGNG「デジドカ」の意味がよくわかる。
0329デフォルトの名無しさん
NGNG変換すりゃいいって言われるかもしれんが、それじゃ結局遠回りだし、やっぱり
元から簡単な処理する為に作られたもんだと思うよ。
VBでC/C++に負けない速度の物を、とか考えるのはVBしか使えないヤツでしょ。
>>1に書かれている事を実践するより、アルゴリズム見直した方がよっぽどマシだと思われ。
0330デフォルトの名無しさん
NGNGその助言は何10回となされたのだが、受け入れられないのだ。
0331デフォルトの名無しさん
NGNGもしかして 構造体配列を作って、その配列index配列を作ってソートしますか?
となると、構造体毎にソートアルゴリズムを書かなければならなくなりますね。
そういやコールバック無かったか
0332デフォルトの名無しさん
NGNG結局VC/Delphiには勝てないとわかった上で
どこまで高速化できるかを楽しむためのスレにしようと言う話が少し前にでていたような気がする。
あとはVB厨がはまりやすいボトルネックを見付けるのにも有効かと。
0333デフォルトの名無しさん
NGNGプログラミングで高速化というのは、あくまでもアルゴリズム改善の事であると判った上で
の話なんだね?
そういう事なら、課題を考えて、それをどうするかという方向の方がいいんじゃないの?
一般的な話として>>1のようなのが出ると、勘違い厨量産の方向になって全く良くない。
0334デフォルトの名無しさん
NGNG何かと話題をVB vs Del(C++)にすり替えたいらしいアフォが多いのでな。
0335デフォルトの名無しさん
NGNGなんで構造体ごとに配列index配列のソートを作らなきゃならんのよ?
中身のソートとポインタ(配列index配列)のソートの区別ついてないだろ。
>そういやコールバック無かったか
イベントでも、Strategyでも好きなものを使えばよい。
0336332=299他
NGNGもちろん。そのためのネタフリを何度かしている。
下手に課題からベンチマークで速度を測ろうとするとVC厨・Del厨が暴れそうなのもいやなんだよね。
所詮カートはF1より遅い。
けどカートの最速を求めるのは悪くないよね。
あとVBじゃマルチスレッドを(まともには)使えないと言うのもユーザの体感速度には影響するかな?
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNG比較関数をどうやって渡すんだ?
0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNGないだろよ。
0341デフォルトの名無しさん
NGNGそれは違うな。
CやPascalスタイルで開発されてきた普通のアルゴリズムを利用出来ないからこそVBは遅いんだ。
だから、VBで高速化したいなら、普通じゃないアルゴリズムを開発する必要があるって事だ。
0342デフォルトの名無しさん
NGNGソートより描画がボトルネックになりそうな予感
>>341
97%程同意
0343デフォルトの名無しさん
NGNGちっとはオブジェクト指向プログラミングを勉強しろ。
0344デフォルトの名無しさん
NGNG> CやPascalスタイルで開発されてきた普通のアルゴリズムを利用出来ないからこそ
利用できないアルゴリズムってなんだ?
ソースが利用できないってなら分かるが。
0345デフォルトの名無しさん
NGNGボールが沢山箱の中に入っている。 重力は下に働き、
ボールの描画は単なる塗り潰し円として、その半径を、
箱の外からの視点からの距離に逆比例するとして描け。
半径r0、視点位置(x0,y0,z0)は初期設定、
ボールの個数Nは10個より開始し5秒毎に1個増やすものとする。
初速、初期位置はランダムに設定せよ。
0346デフォルトの名無しさん
NGNG1、ボールの入る箱を大きな球として
2、正方形として
好きな方で反射するものとしてよい。
ボール同士の反射は行わせてもよいし、無視してもよい。
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNG単純に、構造体配列に取る方法では、最大ボール数が決まってしまう。
配列構造だと動的にボールの追加削除は難しいし、遅くなる。
だからヒープに作成して、Zオーダでポインタをソート。
ソートは最初の1回目はクイックソート
ループ中は、座標更新後にバブルソート
描画はソートされたZオーダ順にメモリビットマップに塗り潰し円を描けば良い。
0349デフォルトの名無しさん
NGNG実際に実装しなくていいんだよ。 VBならこういう実装するという議論が出来ればそれで
0350デフォルトの名無しさん
NGNG煽りに対して、いいわけしてる内にわけのわからんことになってると。
0351デフォルトの名無しさん
NGNGレスしてる人間も分かってる。
ただ、わかってない人間もいる。
それだけ。
0352デフォルトの名無しさん
NGNGVBでもC/C++に負けないくらいの実行速度を出す方法はある。
VBのコードを実行速度で最適化しよう。
↓
C/C++で書けば?
↓
VBでも書き方でいくらも早くなると言うことを示したい。
↓
プログラムを早くすると言うのはアルゴリズムを練る事だ。
小細工をして保守性/可読性を下げるのはよくない。
そうまでしてVB使いたくない。
↓
別にコーディング技法で実行速度を最適化するのは悪いことじゃない。
全部のコードを実行速度で最適化する気になる必要は無い。
状況によって必要な個所を速度で最適化すればいい。
パフォーマンスと可読性/保守性のトレードオフ。
↓
*以下議論ループにつき割愛。
問題提起からの分流
・空文字列チェックはs=""よりLen(s)=0が早い(>>86)
→そうか?(>>91)
・VBはOLEを使うのが楽なのにアーリーバインディングしろ、はおかしい。(>>155)
→はあ?(>>157)→(>>161)→(>>162)→(>>168)→(>>169)→(>>173)
→(分岐)→(>>169)→(>>174)→(>>178)
0353デフォルトの名無しさん
NGNG文字列を値渡しするな。
Midとかは$つけろ。
ループの中でプロパティさわりにいくな。
For i=0 To GetCount()というコードは問題ない。(>>22)
IIfはIfより遅い。(>>63)
不要なDebug.Printを取り除く
数値型は値渡し強制(>>102)→なんで?(>>124)
Object型やVariant型に入っている型を調べるときTypeNameで型名を調べるより、TypeOf 〜 Isを使用したほうが速い。
Paintイベントを使用するとオブジェクト全体の再描画が必要なのでサブクラス化してWM_PAINTに反応して必要分だけ再描画する
表示中のコントロールの変更の時は、再描画を停止する/非表示にする。(>>115)
If A And B Thenとするよりも、If A Then If B Thenとするほうが速い。(>>179)
Declareで文字列やユーザ定義型を使うと文字コード変換や再配置が発生して遅くなる。(>>212)
ReDim Preserveは遅くなる
サンプルコード:
・>>96-97→>>229-230→>>231-232
・>>105(>>103に対して)
0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNGこれはVB以外の言語でも使えそうな気がする。
こんど試してみよう。
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNG画面更新してなきゃ表示されたまま。
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNGなんで.NETアプリはあんなに起動が遅くメモリを大量に消費するのですか?
0367デフォルトの名無しさん
NGNG0368デフォルトの名無しさん
NGNG嫌な仕様ですね。致命的です。
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNGそこらのプログラマが書いたコードが
5年先にまともなプログラマが今書いたのと同じ程度のパフォーマンスが出るように設計されてるからです。
ただし、5年後にそのコードが動くパソコンを探すのに苦労するでしょうが
0372デフォルトの名無しさん
NGNG何を言いたいのかサッパーわからん。
0373デフォルトの名無しさん
NGNG重いったって5年先にゃマトモに動くさ。
今重いから、オマエラみたいなバカが書いて重くても言い訳できるだろ?
そしてオマエラが書いたクソ重いコードも5年先にはマトモに動くさ。
ただし、5年先に動く環境作るのは大変だろうがな。
翻訳終了
#しかし、アルゴリズムの選択ミスなら、5年先には3倍重くなってるだろう
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNGbasicだと簡単な事が簡単に出来る。
で、入門書も、キーボード操作から教えてくれてて、
なんか作れた気分になる。
だから、もっと大事な筈の基礎をはしょってしまってる。
そんなわけで実際に遅いとなると、アルゴリズムの改善じゃなく、小手先のテクニックを探そうとする。
あるいは、遅ければ速いパソコンを買えという。
#工賃の方がパソコン買い換えるより高いからとね。
で、それは多少効果があるように思えるだろう。
しかし、アルゴリズムが改善されてない限り、データ量が少し増えただけで無意味になる。
0376デフォルトの名無しさん
NGNG1、きとんと構造化する事
gotoを使わないのが構造化じゃないよ 数学的帰納法と、抽象化が一番大事な点
この2つはちゃんと勉強して自分から訓練しないと身につかないから注意ね。
高速化したいなら、目先の高速化の為にサブシステムに分解するのを止めたりと愚なことはやめて
きちんとサブシステムに分解して、高速化するべき個所の分析、変更を容易にする事が大事
2、代表的なデータ構造とアルゴリズムの内実に触れる事
これらは体系化され、誰でも簡単に勉強出来るようになっている。
それなのに逆に学ぼうとする人が減ってる現実がある。
これらそのものがライブラリに組み込まれて、それを使うだけになってしまってるからだ。
しかし、高速化したいなら、どのアルゴリズム・データ構造を取るべきかというのが一番肝要
0377デフォルトの名無しさん
NGNG命名する事は概念を作る事でもあって、 とても重要だね。
0378デフォルトの名無しさん
NGNG別に VB に限ったことじゃないじゃん。
0379デフォルトの名無しさん
NGNG他の言語は、いきなり型とか何とかで適性ないと躓くからなあ
0380デフォルトの名無しさん
NGNGでも...
>適性ないと
と言うことであれば、早めに躓いた方が本人のためだよね。
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG構造化はプログラムの記述を簡潔にし同時に変化に対して柔軟にするだけです。
保守性が高まるというわけです。
本質的な意味での高速化はデータベース化とそれと連動したアルゴリズムの改善
でしか為しえません。用途に応じてハードウェアにデータベースを組み込んだり
します。
0383デフォルトの名無しさん
NGNGそのデータベース化って
普通に言うDBを使うとかじゃなくって
処理に時間のかかる関数の結果をあらかじめ用意してしまうという方のでしか?
0384デフォルトの名無しさん
NGNG概ねその通りですね。
0385デフォルトの名無しさん
NGNG>>383 は読んだがそれでも変な感じがする。
0386デフォルトの名無しさん
NGNGめったに更新されないものだったらハードに組み込んだほうが
効率的ってことでしょ。
0387デフォルトの名無しさん
NGNGハードに組み込むってのは 即値として入れるって意味かい?
ハードウエアって意味じゃないよね?
0388山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNGだいたい、その種のテクニックをハードに組み込むって言い方はしないよ。
ROMに書き込むようなソフトやLIBでしか提供されない種類のソフトの事をミドルウエアとか言う場合はあるけどね。
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNG0395山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0396山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0397デフォルトの名無しさん
NGNG会社が使えというからさ
0398山崎 渉
NGNG0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNGそういうやつがどんなアプリ作っているか知りたい。
0402デフォルトの名無しさん
NGNG相手にするなよ。VBすら使いこなせないヤツを。
0403山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0404デフォルトの名無しさん
NGNG使い分けてるヤツは別だけどな
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNGそこまで無理してVB使わなきゃいけないなら素直に
他の言語使った方がええんとちゃう?
0408デフォルトの名無しさん
NGNGコンテナ使う以外にヴァリアントなんてつかうのか?
0409デフォルトの名無しさん
NGNGデータベースでは各データ型にNULLを代入することが出来る。
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNGメモリコストも実行時コストも高いしさ。
もっとも自己再定義できるプリミティブなデータ型ってのはいいけどね。
0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNG>> ・数値はint(16ビット)ではなくlong(32ビット)を使用する。
これって何か意味あるんですか?
データ転送料2倍で、遅くなるだけ何じゃ。。。。
少なくとも、C、Java で実験すると1,2,4,8 Byte 単位で処理をするとちゃんと順番に遅くなるのですが?
0415デフォルトの名無しさん
NGNGこれをすればC/C++等と遜色ない速度で動作します。
0416デフォルトの名無しさん
NGNGしません
---終了---
0417デフォルトの名無しさん
NGNGこれをすればC/C++等と遜色ない速度で動作します。
すくなくとも>>1の小細工はしなくていい罠
コードは1行だしな
0418デフォルトの名無しさん
NGNGそれは実験のやり方がわるい
0419デフォルトの名無しさん
NGNGだからベンチマークが遅くなるわけ。
ただ、>>414 の言う通り、実メモリとの転送幅はそれだけ小さくなるし、実メモリはキャッシュに比べて極端に
遅いから、一般アプリだと小さい幅にした方が実速度は速くなるんだよね。
0420デフォルトの名無しさん
NGNGそれに合わせて変化するやつ。
VBとVCの一番の差というより、いわゆるVisualプログラミング系言語とVCの差というべきもの。
0421デフォルトの名無しさん
NGNGこれはイメージをそのまま保存するからダメなんだと聞いたことがある。
VBに限らずDelphiでも、C++Builderでも同じこと。
今でもそうなのか?
0422デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/vsisv/boc/vsresizer.asp
VS-Resizer の事を言ってるの?
Delphiにも似たようなコンポーネントは売ってたよね。
VC++のダイアログではそれが出来ないと?
0423デフォルトの名無しさん
NGNGよくまあそんなデタラメを(ry
0424デフォルトの名無しさん
NGNG意味がわからん
ビットマップにでも保存されてると思ってるのか?
0425デフォルトの名無しさん
NGNGでも、
VCLの場合は フォームにパネルを配置しておいて、Alignプロパティで動き方を決めておいてから
アイコン類を配置して、アイコンはAnchorsプロパティでパネルサイズが変化した時の動き方を決めればいいし
その方がユーザも使いやすいからなあ。
もし、リサイズさせたいなら、起動時に位置を全部記録しておいて
リサイズイベントで処理すればいいから、そんなに手間じゃないし。
0427デフォルトの名無しさん
NGNG実際にはビットマップとまでは言わないよ(w
分かりやすく例えればの話。
ペイントのファイルと、CADのファイルの違いに例えて説明を聞いたことがあるんだが?
0428デフォルトの名無しさん
NGNGぜんぜん判ってないみたいだよ。その人。
VB なら .frm Delphiなら .DFM にフォームの位置情報が入っている。
そして、実行中に、位置情報を統一して処理するのは 初歩的な処理の一つだ。
0429デフォルトの名無しさん
NGNGそうなの?
VC++との比較の中で出てきた話なんだけど。
つまりVC++の優位性って一体なんなの?
プログラミングスタイルのレベルの話じゃなく、できあがったアプリに出てくる差とは?
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG結局使う人の差だよ。 VC++ならあんまり酷いレベルだとそもそも動くように作れないってだけの話さ。
0432デフォルトの名無しさん
NGNGまあ、MFCxx.DLLがOS標準で存在するのがメリットと言えるならメリットくらいかな。
他のツールに比べて開発時間もかかるし、要求される作業員のレベルも高くなる。
しかし、だからこそVC++でわざわざ作ればそれなりの性能になる。 そりゃ時間も金もかけてるのだから当然だ。
ただし求めるものが性能なら、VBは無理としてもDelphiでもBCBでも同じ程度の性能は
もっとコストをかけずに実現出来る。
0433デフォルトの名無しさん
NGNGただし、ハイアリング・教育・メンテナンスコストは増大するがな。
0434デフォルトの名無しさん
NGNG414 書いた者です。
>>418 は実務アプリを組んだこと人ね!
わかっている人もいて安心!
2次キャッシュに入るかはいらないかは大きいですよね!
まぁVBだとあんまり恩恵ないのかな、それぐらい遅い。
VBは、Java よりもはるかに遅いです。ドロー系、CAD系 実務アプリでチェックしています。
&100Mぐらいのデータをメモリー内での処理なんてのもやってみました(実務用にね:ベンチマーク専用ソフトじゃなく)
VBが早いってのはそう思うぐらいCPUが早いのとあんまり処理をしていないソフトだからです!
まぁその程度のマン・マシンだけのアプリなら、VBでも十分と言えます!(あるいみJavaより使いやすいマンマシンですからね:人間の操作する時間はCPUに比べて極端に遅いからね!)
でも、処理を考えるとVBよりJavaの方が早いです。もちろん C の方が早い!
But へたくそな mfc プログラム(素人作成の)は、Javaより遅いことも多い
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNGあの手のバイトコード変換型のシステムはJITTERのファーストロード時のオーバーヘッドが大きいので、
少なくても同一コードが2回以上実行されないと、コストの回収ができず、
ネイティブコードをダイレクトに実行するプログラムよりはるかに遅くなります。
これは、.NETのランタイムシステムも同様です。CLRのローダもバイトコードのコンパイルを行い、キャッシュをして実行時のコストを回収してます。
ちなみにVBが遅いというもの事実です。ただし、VBの遅さはVBのコンパイラが生成するコードの品質が悪いのではなく、
VBのランタイムライブラリの組み込み関数がとても遅いため全体的な処理速度が劣化します。
シンボル情報をつけてコンパイルして、生成コードをVCのデバッガで確認するかSoftIceを使えばわかりますが、
実際、浮動小数点などの演算を行う部分の生成コードの最適化の質は、VCのコンパイラのC2フェーズの最適化と同じことが行われます。
かなり高度な最適化が行われてることがわかります。
0439デフォルトの名無しさん
NGNG実際に確かめた結果? その根拠は?
0440デフォルトの名無しさん
NGNG現在は、OSが実行コード部分を改変できないように、プロテクトをかけていますので簡単ではありません。
コードの書き換えを行うとすると例外が発生してOSによってスレッドが例外ハンドラにつかまり、プロセスごとシャットダウンされます。
ただし、この手の自己改変可能なコードはメモリのプロテクトを外せば変更できますし、それを元に戻せば、実際に実行できます。
以前、UDT(ユーザー定義型)=構造体に、Intelのマシンコードを入れて実行させたことがあります。
ただし、Alpha版(今はなきDECの石)のVBにポーティングするようなケースでは止めたほうがいいです。
0441デフォルトの名無しさん
NGNGコンパイラの品質なんて関係ないのよ。
大事なのは、アルゴリズム。
その処理にもっとも効率の良いアルゴリズムを適切に採用出来るかどうかが重要。
0442デフォルトの名無しさん
NGNG文字列のある領域は実行コード部じゃないから CALL さえすれば実行出来るだろう
0443デフォルトの名無しさん
NGNGプロファイラを使って動的解析と静的解析をして評価しました。
もっともこんなことをしなくても、デバッガを使えば生成されたコードをみれば、
どのくらいランタイム関数を呼び出してているのか、そのオーバーヘッドがいかに大きいかすぐにわかります。
0444デフォルトの名無しさん
NGNGアドレス忘れたけど、既に商用である。
0445デフォルトの名無しさん
NGNG禿げ同。だからVBが遅いって行っている奴。
あれは自分のアルゴリズムが悪いだけ。技術力不足なのさ。
0446デフォルトの名無しさん
NGNG具体的にどの関数?
0447デフォルトの名無しさん
NGNGデータ部分は、リード可能、実行不可で、マークされてます。
デバッガ上でEIPレジスタのアドレスをそのデータへ変えて1インストラクションでも実行させれば、例外が発生します。
0448デフォルトの名無しさん
NGNG文字列操作系の関数は特に時間を消費します。MidでもLeftでもいいのですが1行だけ呼び出すコードをSub Mainに書き入れて、
シンボル情報を生成して、デバッガで確認すればわかるかと思います。
0449デフォルトの名無しさん
NGNGアルゴリズムの改善は劇的な処理速度向上が見込まれることがありますが、これは処理系に依存したことではありません。
0450デフォルトの名無しさん
NGNG通常、スレッドに対してエクセプションハンドラを関数の呼び出しを設定すると、
例外発生時にリワインダーをかけて例外を処理できるハンドラを探すのですが、
VBの場合、呼び出し元の関数でOn Errorで例外ハンドラを設定すると、それ以降、ネストして呼び出す関数すと、
必ずスタックフレームに例外ハンドラを設定されますし、
例外が発生するとリワインドされて処理できる関数へ戻るオーバーヘッドがかなり大きいです。
0451デフォルトの名無しさん
NGNGhttp://members.tripod.com/~masapico/doc_FuncPtr.html(死んでる? ↓googleキャッシュ)
http://www.google.co.jp/search?q=cache:P38QdU0CPmUJ:members.tripod.com/~masapico/doc_FuncPtr.html
0452デフォルトの名無しさん
NGNGtry-catchもそうだろ。
0453デフォルトの名無しさん
NGNG> 文字列操作系の関数は特に時間を消費します。
なんに比べて? まさか文字列が存在しない言語と比べてるとか?
0454デフォルトの名無しさん
NGNGいえ、残念ながらWindowsはフラットメモリモデルを採用しているので
リード可能で実行不可という状態は作れないと思いますよ。
>>449
いえ、VBだと自由にアルゴリズムを選択できないから遅かったのでしょう。
0455デフォルトの名無しさん
NGNGVCのC++などのtry catchも実質的に例外ハンドラの設定を行うという点では同じなのですが
C++の場合は、関数単位できちんとスタックフレームの形成をコントロールできます。
また例外を処理できるハンドラを探すリワインダは、実際の例外コードのみを渡して処理できますが、
VBの場合、常に単一のハードウェア例外を能動的に発生させて、
例外の情報の詳細はVBのランタイム関数の内部で解析するようにできています。
(VBのランタイムエラーをErrorステートメントで起こしてデバッガを見てる、常に単一のハードウェア例外しか発生しません)
0456デフォルトの名無しさん
NGNGそういや、VBにはポインタがないからリストを作れないとほざいていた奴がいたな。
参照はあるから同じようにリストは作れるし、
たとえ参照が無くても配列とインデックスでリストは作れるのに。
そんなやつが遅いと言っているんだろうね。
0457デフォルトの名無しさん
NGNGということは別にVBだからって遅いわけじゃないね。
> さらに言うと、VBはOn errorを使うと遅くなります。
さらに言うと、C++はtry-catchを使うと遅くなります。
と言っているようなもん。
何かやったら遅くなるのは当然の話。
0458デフォルトの名無しさん
NGNGでは、ユーザモードのプロセスから、カーネルモードのコードを読めてしかも実行できると?
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNGたとえば文字列の扱いは?
>>1 のように配列にして配列アクセスしても遅いのはどうでしょう?
Delphiの文字列のように配列がポインタアクセス並とはいわないけど
検索はInstr強制みたいなのは アルゴリズムが制限されてるとは言わないの?
0461デフォルトの名無しさん
NGNGいいえ、違います。VBのランタイムエラーの処理の方法が、設定されたVBのランタイムライブラリでしか解析できないようになってるため、
つまり通常のエクセプション構造体に情報を入れずに、VBにしかわかないような方法を取ってるため遅くなります。
デバッガでスタックフレームの冒頭で設定される例外ハンドラの先のアドレスを確認してみてください。
0462デフォルトの名無しさん
NGNGやめとけ。議論になってないぞ プ
0463デフォルトの名無しさん
NGNGそうですね、言いたかったことが少しおかしいです。
アドレッシングとメモリアクセス制御の関連を、リングの特権の問題にすりかえてしまいました。
では改めていうと、同一プロセス内のメモリであれば、どのアドレスでもリード可能、実行可能だと?
0464デフォルトの名無しさん
NGNG>>457
VB厨必死だな(w
0465デフォルトの名無しさん
NGNGそうでもないです。私も最初は462と同じように考えましたし、そう思って調べた経緯があります。
そもそも例外ハンドラとは処理系依存ですし、正確に言うとVCの場合、tryとかcatchは関数の実体があるわけではないですし、
さらに複雑にしてるのは、例外ハンドラやエクセプション構造体の情報がSDKやDDKにほとんど記されてないのが問題です。
これはM$の怠慢です。
0466↑↑↑↑↑↑
NGNG>>462
そうでもないです。私も最初は457と同じように考えてました。
0467デフォルトの名無しさん
NGNGその都度、デバッガで追いかけてマシンコードを解析しながら調整するのは辛いですし。
そいうゆう意味ではMFCもATLも他の処理系の多くもソースコードがついてますので、安心です。
VBでも速いコードは確かに書けるのですが、内部解析をしまくる必要があるのは他の処理系よりも大変ですし、VBのメリットを失ってしまいます。
0468デフォルトの名無しさん
NGNGそれもおかしなスリ換えだね。
OSの仮想記憶機構によって ページ単位にRead可能 Write可能がそれぞれ設定出来る。
しかし、実行可能かどうかについてWindowsでは設定出来ない。
ただし、Read可能でなければ実行も可能ではない。
0469デフォルトの名無しさん
NGNGそれが無いとそろそろ厳しい。
0470デフォルトの名無しさん
NGNGそれは正しいです。ただ、話をしてる内容はカーネルモードの仮想メモリマネージャのページング機構の話ではありません。
ユーザーモードプロセス空間のメモリの保護と実行権の話です。
0471デフォルトの名無しさん
NGNGユーザモードで実行権を独立にコントロール出来るアイデアをもってるなら
さっそくマイクロソフトに売り込め! 高く売れるぞ。
0472デフォルトの名無しさん
NGNGただRead可能であれば、実行できてしまうということは、
データが格納されているアドレスに誤ってEIPが設定さrた場合、コードの実行ができてしまうことを意味します。
それはないとはずですが、とはいえ、私も少々気になるところがあるので調べてみます。
0473デフォルトの名無しさん
NGNGもし、スタックに実行権を禁止出来るなら
もし、データ領域に実行権を禁止出来るなら、
バッファオーバランはセキュリティ問題と無縁だったろうね。
0474デフォルトの名無しさん
NGNGΣ(゜Д゜;≡;゜д゜) < うお!なんかすごいところに迷い込んじまったぞゴルァ!
./ つ つ \______________________
〜(_⌒ヽ ドキドキ
)ノ `Jззз
0475デフォルトの名無しさん
NGNG確かに!でもデバッガはInt3を埋め込んでもいないのに、確かに停止し、実行権があるかどうかをチェックしてます。
もちろん、CPUのステップ実行ではありません。
シンボル情報だけではできないので、デバッグを行うCPUのコードを使ってると思うのですが、それにしても解せません。
0476457
NGNG観測的な情報なのであまりエンジニアらしい論拠とはいえないので申し訳ないのですが、
VirtualAllocやVirtualProtectExでは実行権の制御の設定はできます。
これを実現するには、普通に考えてOSというよりCPUの機能支援がなければ無理です。
とはいえ、まだ調べきってないので、間違ってるかもしれません。もう少し時間が必要です。
0477↑↑↑↑↑↑↑↑↑
NGNG457ではなく475です。
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNGアセンブラを呼び出しているだろ。
メモリを確保してMoveMemoryで命令を転送して実行。
これは可能。
0480475
NGNGVirtualProtectExの動作チェックをしました。結論から言うと468の言ってることは正しい。
つまり447で言ってるデータエリアへEIPをセットして実行しても「例外は発生しない」ことが正しい。
メモリ保護属性をチェックしたがデータエリアにEIPをジャンプさせて例外が発生するのは、PAGE_GUARDだけ。
言い換えるとPAGE_EXECUTE_READもPAGE_READONLYもコードの実行ができる。
つまりデバッガはメモリアクセスやコード実行の異常をPAGE_GUARDの例外に引っ掛けてチェックしてる。
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNGしかしブビ厨にはその議論の全てが理解できない罠。
0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG例えこの世界にDelphiが存在していなくてもVBはやっぱり
他の言語使いたちから虐げられていただろう。
やはり使っている側の問題が大きいのだろう。だからVB,NETは
もっとシンタックスを複雑にして厨を近づけなくする必要がある。
0485デフォルトの名無しさん
NGNGDelphi使いは攻撃してもリスクが少ないだろうという彼らなりの計算か。
0486デフォルトの名無しさん
NGNG本質は言語の問題じゃないYO。
VBは技術的レベルが低くても使える言語だから、他言語使いよりも劣ってると卑下してる。
だからといってVB使いの技術レベルが低いわけではなく、単に技術レベルの低い人達が多いというだけ。
この上のスレの内容がわからないような、VB使いより技術レベルが劣るC++やJava技術者も少なからずいるはず。
このジレンマが論争の火種になってると思う。
Delphi,C++,Javaサイドは、自分達の使ってる言語より劣ってる言語しか使えないVB厨房といい放ち、
VBサイドは、確か言語仕様は他言語に劣る点はあるが、技術力では決して負けてない一部のVB使い。
双方、技術的な会話をできるほど力がないから言葉の揚足ばかりしてる。
0487デフォルトの名無しさん
NGNG適性のある人はどんどん先に行って、技術格差が極端に開いてしまう事になったでしょうね。
技術力のある人が使ってもせいぜい数倍しか作業効率が変わらないのがVBの良さでもあり、限界でもあるのでしょう。
0488デフォルトの名無しさん
NGNG言語仕様の比較やコンパイラの生成コードの評価すらできないような香具師には無理だわな。
0489デフォルトの名無しさん
NGNGそれがもっとも正しい解かも。あんた鋭いこというね。
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNGスレッドのような制御オブジェクトの例外を制御するオペレーティングシステムの機構。
0492デフォルトの名無しさん
NGNGその大半がCOBOLから流れてきた者達である。
0493デフォルトの名無しさん
NGNGVisual Cobol++
Visual Cobol#
スレの予感…
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG荒らしの人間的レベルは誰が何とも言おうとも 低 い。
0497デフォルトの名無しさん
NGNG技術的な観点から論理的な話の展開ができないから、
主観の入り込む所や言葉の捉え方をかいつまんで子供でもできる水掛け論をするのだろうな。
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG>>482-485あたりにも出ているね。
0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGメインフレーム残留資産が膨大にあるからなのかな。富士通は以前からずっとCOBOLにこだわってるね。
最近のPCは性能も向上したし、クラスタリングもロードバランシングもできるし、スケールアップからスケールアウトでソリューションが増えたし。
>>500
たぶん自分より下の何かが必要なんだよ。手っ取り早く叩ける対象が必要なんだろう。
実際はもしかしたら技術力がはるかに下なんんだろうけどさ。
0504デフォルトの名無しさん
NGNG自分が使ってる言語が最高だと思いたいのは理解できないでもないが、
だからどーしたと言うのだろう、
COBOLでもVBでもCでもDelphi何を使っても、
良いシステムやプログラムを書くことが大切であって、
言語は問題では無いとおもうのだが・・・。
最近、ここも荒らしまくってる奴がいるようだが、
何がいいたいのかよく判らん。
0505デフォルトの名無しさん
NGNG久しぶりに激しく同意。
0506デフォルトの名無しさん
NGNG出来る知識を持った奴もいるわけで。
それについてこれない、認めない奴が荒らすのだろうね。
0507デフォルトの名無しさん
NGNG外部関数コールの高速化について。
APIなどの外部関数のコールは実はダイレクトに呼び出されずにVBのランタイムを経由するけど、これをダイレクトにコールする方法として、
タイプライブラリを使ってそれを参照設定することによってプロトタイプ宣言(つまりDeclare宣言をしない)をするといい。
ただし文字列のポインタ(アドレス)を引数に渡す場合には、暗黙のUnicode-Ansi変換が行われないため
APIなどは関数名の末尾のAとWに注意して利用する必要がある。
これによってランタイムを経由する時間の削減およびUnidode-Ansi変換の時間をなくすことができる。
0508デフォルトの名無しさん
NGNGええと、昨夜相手してたのは俺で、俺はVBは嫌いなんだが?
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNGタイプライブラリを使っても正確にはDLL関数を直接呼び出してないみたい。
かなりショートカットされて早くはなるけど関数のエントリを呼び出さずにVBランタイムを経由してる。
でも文字列の変換はされないからそれなりに速いか。
検証に利用したAPIはTextOutW。MIDLコンパイラで、/mktyplib203 /win32 オプションでビルドしたタイプライブラリを使った。
ソースは、こんな感じ。
#define WINAPI __stdcall
#define VOID void
[
uuid(FA5FB224-4222-11d2-8137-00C04FB64A56),
helpstring("The 2ch sample, Declare by TypeLib"),
version(1.0)
]
library The2chSample {
[dllname("GDI32.DLL")]
module Win32API_GDI32 {
[
entry("TextOutW"),
helpstring("Boolean TextOutW(long,long,long,String,long)")
]
long WINAPI TextOutW([in] long hDC,
[in] long x,
[in] long y,
[in] BSTR bstrString,
[in] long nCount);
}
}
0511(*゚Д゚)
NGNG| \〉`ヽ-―ー--< 〈\ |
7 , -- 、, --- 、 ヽ
/ / \、i, ,ノ ヽ ヽ
| (-=・=- -=・=- ) | VBスレでIDLまで持ち出しやがって
/ 彡 / ▼ ヽ ミミ 、 殺気がにじみ出てるぜ
く彡彡 _/\_ ミミミ ヽ
`< ミミ彳ヘ
> ___/ \
/ 7 \
| /
0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNG誰か512にコンパイラがどんなものか教えてやれ ( ´,_ゝ`)プッ
0515512
NGNGFunction FooMe() As Long
Dim l As Long
l = l + 1
FooMe = l
End Function
Function FooBas() As Long
Dim l As Long
l = l + 1
FooBas = l
End Function
0516512
NGNG--------------標準モジュールの場合--------------
4: Function FooBas() As Long
00401F70 mov eax,1
00401F75 ret
--------------FORMの場合--------------
29: Function FooMe() As Long
00401F00 push ebp
00401F01 mov ebp,esp
00401F03 sub esp,0Ch
00401F06 push offset ___vbaExceptHandler (004010e6)
00401F0B mov eax,fs:[00000000]
00401F11 push eax
00401F12 mov dword ptr fs:[0],esp
00401F19 sub esp,10h
00401F1C push ebx
00401F1D push esi
00401F1E push edi
00401F1F mov dword ptr [ebp-0Ch],esp
00401F22 mov dword ptr [ebp-8],offset __imp_@__vbaFreeObj+3Ch (004010c0)
00401F29 xor esi,esi
00401F2B mov dword ptr [ebp-4],esi
00401F2E mov eax,dword ptr [Me]
00401F31 push eax
00401F32 mov ecx,dword ptr [eax]
00401F34 call dword ptr [ecx+4]
00401F37 mov dword ptr [FooMe],esi
30: Dim l As Long
31: l = l + 1
0517512
NGNG00401F3A mov dword ptr [FooMe],1
33: End Function
00401F41 mov eax,dword ptr [Me]
00401F44 push eax
00401F45 mov edx,dword ptr [eax]
00401F47 call dword ptr [edx+8]
00401F4A mov eax,dword ptr [FooMe]
00401F4D mov ecx,dword ptr [FooMe]
00401F50 mov dword ptr [eax],ecx
00401F52 mov eax,dword ptr [ebp-4]
00401F55 mov ecx,dword ptr [ebp-14h]
00401F58 pop edi
00401F59 pop esi
00401F5A mov dword ptr fs:[0],ecx
00401F61 pop ebx
00401F62 mov esp,ebp
00401F64 pop ebp
00401F65 ret 8
>>513
実際に速いんですけど何か?
>>514
私があなたに教えてあげましょうか?
0518デフォルトの名無しさん
NGNG誰か512に教えてやれ ( ´,_ゝ`)プッ
0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG>>520==>>514
厨房必死だな(プ
0522デフォルトの名無しさん
NGNG相手にならない雑魚はほっとけよ。議論にならん
0523デフォルトの名無しさん
NGNG俺は>>518だが>>513じゃないぞ。
たまたま上がってたスレに必死な奴がいたから書き込んだだけだ。
相当必死なんだな。
0524デフォルトの名無しさん
NGNG相手してくれる厨房がくさるほどいるぞ。
0525デフォルトの名無しさん
NGNGんー。最近マ板行ってる?つまらなくなってるんだけど。
というかム板が荒れてきたからマ板の勢いが無くなってる。
DelスレとかC#スレがすごいことになってるし。
0526512
NGNG語るにはそれに見合う実力が必要なんだよ。
0527デフォルトの名無しさん
NGNG別にどうでもいいよ。
0528デフォルトの名無しさん
NGNGコイツ、何でキレてんだ?
相当必死なんだな。
0529デフォルトの名無しさん
NGNGOfficeは実用的高級コンポーネントを持ったVBなんだとも言えます。
但し.NETのVBは毛色が異なります。VB6.0のことを言っています。
MSの立場では、VC++等で書かれたコードは、ソフトウェアというよりも
ハードウェアの調整部分をソフトウェア化したものであると捉えてます。
つまりハードウェアの一部を作っていると考えるのが自然です。
VBやVBAは仕様書にする前のプロトタイプ段階で使用するのが最適で
そもそも速度よりも、気軽に仕様を変更しながらあれこれ試行錯誤して
いくのに適してます。スピードうんぬんはどうでもいいのです。
(書籍でVBによる有限要素法とかありますけど、まとまった量とか長時間に
渡って断続的に何回も計算をするような用途には余り向いていないことは明ら
かです。)にもかかわらず、あれだけのスピードが出たら上出来だと思うべき
でしょう。VBAでは遅すぎるという時にVBを補助的に使うのが良いと思います。
(Excel+VBAを開発環境とみなすと、変数をすべてセルの上に置けばこれほど良い
環境はありません。)
.NET,Java系はそもそもMSの基本的ポリシーに沿っていないところがあるので、
長期的に使われることを前提とする場合、仕様書代わりにソースを書くという
用途のみに用いるべきです。精々コンテナとして用いる以外は実装はVC++に任
せるべきです。プログラム全体の論理的構成などをきちんと行うことに専念し
コードの最適な分割や速度面などの些末な問題はVC++に任せるべきです。
下手な仕様書よりも、VB.NETやJava,C#等で書かれたソース(動作確認は取って
下さい)を渡されるほうが効率的に決まっています。VC++プログラマが速度面の
向上への配慮や様々なシステム実装上の配慮をそれらに施したものを書くでし
ょう。
0530デフォルトの名無しさん
NGNG。NET系言語は、論理的構成や論理的不具合、将来の改良・保守に配慮
して清書、VC++プログラマに要求定義する為の通信用言語
VC++はシステムの実情に配慮しながら細部を書いていく言語
時には汎用化できるソフトウェア部品が生まれてVBでも使えたりすることも
期待できる。
0531デフォルトの名無しさん
NGNG言語には向き不向きがあるのは理解できるけど、どの言語だからできるとかできないとかじゃなくて、本質的には技術力の問題だと思う。
それにVBとVBAは想定してる利用者も製品の位置づけも違うと思う。
VBAはOfficeをプラットフォームとしてアプリケーション利用者を対象としてるのに対し、VBはプログラマが対象だということをM$は明確に言ってるし。
0532デフォルトの名無しさん
NGNGVBしかしらない香具師は、速いソフトは作れないし、
他の言語も知ってる香具師は、速いソフトがVBでも作れる。
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNGソースコードの可読性を保守するなどの能力を失ってしまっているので
.NET系やVB/VBAがそれを補わなければ大きなアプリは作れないってこと
でしょ。VB/VBAで論理的な不具合(存在しない条件を検索しようとした
りとかそういうプログラム以前の問題を排除)を無くし、.NET系の言語
で仕様を実行可能なソースの形で残し、C++でそれを販売する為のコード
に直すって感じ。
0535デフォルトの名無しさん
NGNGスキルの上からじゃ案外と
VBA>VB>.NET系言語>C++
だったりする。世間の評価は完全に逆みたいだが。
プログラマ養成段階でVBAからスタートして、C++まで降りて
今度は管理者養成段階でC++からスタートして、VBAまで上がる
ってのがいいんじゃないのか?
0536デフォルトの名無しさん
NGNGVB6で、でかいもの書く方が無謀だと思うが…
VB.NETならまだしも。
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNGそうだね。 既出だけど、
熟練しても効率が上がらないのは、熟練するほど、高いスキル=経験値が必要だったりするあたりにあるよね。
0539デフォルトの名無しさん
NGNG「でかいもの」の定義によるんじゃね?
世の中の「でかいもの」はCOBOLで書かれてるのが現実だったりする。
0540デフォルトの名無しさん
NGNGDelphiはね、使い手しだいの面が大きいからね。
直感力・洞察力・そして努力を厭わない事に優れている人が使った時の特性は素晴らしい。
でも、そうじゃない人にはVBと同じだ。 いや、初心者にはVB以下かもしれないね。
下手したら10倍くらいの差が出てしまうような道具は、今の日本の業界(人売的要素)には合わないんだよ。
それよりは、誰がやっても同じ程度の出来(少なくとも見栄えは)、
優秀な人がやってもそんなに効率があがらない特性は
素晴らしく日本にマッチしてるんだよ。
0541デフォルトの名無しさん
NGNG個人的にはTurboC、TurboPASCALに散々世話になった世代だが、業務ではやっぱMS-Cだった。
某ランドは商売下手すぎだね。 M$が鬼畜なのも分かるけど...
業務用途に採用されるには性能だけではダメなのよ。
某ランドはもう少し営業というものを覚えなければならない。
0542デフォルトの名無しさん
NGNG因みに、俺はVBもDelもMS-Cも用途で使い分けしているのだが、
Delが業務で使えないと思った理由は?
あと、541的にはVBは業務で使えますか?
0543デフォルトの名無しさん
NGNG業務ってのは複数人で作る事が多い。
複数人でやるプロジェクトは人材がいつでも交換出来る事が必須なのさ。
Delphiじゃ人材の当たり外れも大きいし、そもそも人売り屋で売ってないからな。
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNG数人で作る小さなプロダクトならいいけど、規模が大きくなるとどうしても人の入れ替えが必要だよね。
人に依存しないように開発時の規約を上流工程も下流工程も統一してやるしさ。個人の能力的な格差はできるとしてもね。
それにDelphiでもVBでもC++でもJavaでも、大規模開発ができないわけじゃないよ。仕様どおりにはみな作れるしさ。
すこし大きめのSIerなら1つのプロジェクトに複数の言語を使うなんてこともよくあって、
ビジネスロジックの核となるコンポーネントはJavaで、クライアントのUIはVBで、クライアントのコアロジックはC++でなんてよく見かけるし。
バックグランドのメインフレームはCOBOLのプログラムで、それと連携するなんてことはざらだし。
でもこのスレでは、こうゆうことを言うのではなく、>>1の言いたいことは処理速度の観点からVBの極限までしゃぶりつくすってことなんだろうな。
0546デフォルトの名無しさん
NGNGDelだけじゃないよ。ほかの言語も使い手によってすごい差がでるよ。プログラムってそいゆうものなんだろ。
0547デフォルトの名無しさん
NGNG処理速度アップのネタをだせってか?
それなら、プリミティブなデータタイプでは関数にByRefで引き渡すと高速になるけど、しかしOMコンポーネントを呼び出す場合はByValのほうが高速になるよ。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGもっともパラメータ一つ渡すにも大変だったり、
まともにデバッグはできないわ、
同期をうまくやらないと即死だったりするけど…
0550デフォルトの名無しさん
NGNGおきまりのセリフだが、その根拠は?
0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNGそんなの常識だから聞くな。みっともない。
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!>>553は値参照とアドレス参照の違いをしらないことを自慢してます。
/ / \_________
/ /| /
__| | .| | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0555デフォルトの名無しさん
NGNG| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!>>553はCOMのマーシャリングを知らないことを自慢してます。
/ / \_________
/ /| /
__| | .| | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0556デフォルトの名無しさん
NGNG| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!>>553はスタンダード呼び出し規約のスタック構造を知らないことを自慢してます。
/ / \_________
/ /| /
__| | .| | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG明示的なマーシャリングもあれば暗黙のマーシャリングもあるしな。
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG得にアウトプロセスサーバーのケースと、インプロセス内のスレッド間マーシャリングは大切でつ。
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNGしかもアパートメントモデルが異なると暗黙にマーシャラーが暗黙にセットアップされてスレッドのコンテキストが切り替えわるまでの待ち時間が痛いでつ。
0564デフォルトの名無しさん
NGNG作れるクライアントSTAだし、作れるサーバーもSTAでMTAは作れんしさ。
しかもクライアントはシングルスレッドが基本だから、スレッド間マーシャリングも不要。
0565デフォルトの名無しさん
NGNGそれを知ってて利用するならいいが、知らないでやってると厨房扱いされる。
VBって任意にスレッドを作れんのか。不便っていうかスケールアップのスケーラビ利ティがないんじゃん。
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNGProcessWalkerで調べたら別スレッドになっているようだ。
0568デフォルトの名無しさん
NGNGスレッド間マーシャリングが発生してるから頻繁にシンクが起きるとパフォーマンスが低下するYO。ADOの非同期通知やRDOもでも同じだよね。
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNG意味不明。
0571デフォルトの名無しさん
NGNGVBのプライマリスレッドの管理するオブジェクトを他のスレッドから使うにはスレッド間マーシャリングを明示的にする必要があるから。
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGばーか
0575デフォルトの名無しさん
NGNG99.9%誤りだが、0.1%正解のようだ
0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG自演とわかるレスにあえて突っ込むことなない。
>>573-575
話が理解できなくて嵐をやってるなら、情けないからさっさと消えろ。存在が迷惑だ。
0579デフォルトの名無しさん
NGNG文盲
0580576
NGNGまあ、どちらかというと漏れは>>574にハゲ同なわけだが。w
>・文字列はStringを使用せずに、Byte配列(Cのchar同等)を使用する。
んなことするぐらいなら、用途によって開発環境使い分けろよ。
あと、やけに長文好きなやつが1名生息しているようだが、激しくキモい。
実行不可の話でえんえん知ったかしたあげく、ようやく納得したかと思えば、
今度はメモリアクセスの異常を「PAGE_GUARDの例外」とかアフォほざいてるし。
しかも誰も指摘してないし。w
0581デフォルトの名無しさん
NGNGVB6逝ってよし
0582デフォルトの名無しさん
NGNG> んなことするぐらいなら、用途によって開発環境使い分けろよ。
全部が全部Byte配列を使えってことじゃないでしょ。
パフォーマンスに影響がある部分を局所的にやる。
局所的なことのためだけに開発環境を変えるのもどうかと思うが?
0583デフォルトの名無しさん
NGNGその局所的な部分を別開発環境にしろ。
0584デフォルトの名無しさん
NGNG馬鹿キタ━━━━━(゚∀゚)━━━━━!!
0585デフォルトの名無しさん
NGNG仕方ないと思うよ。そこらへんは普段知らないでいい事だしね。自分も
1、なんとEXEもDLLと同じく毎回同じアドレスにロードされる
2、スタック領域も必ず同じ
3、スタックだろうがデータ領域だろうが コードとして実行可能
これはWindowsがフラットメモリモデルを捨てなければ簡単なガード方法はない
という事で、バッファオーバフローがそのままセキュリティに直結する仕掛けとなっていたってことを最近知ったよ。
そんなもんじゃないの?
なんで、インテルはページ単位に実行不可ビットを作らなかったのかとか、今からでも作れとか
なんでWindowsはフラットモデルにしたのかなあ とか 今からでもコードだけ別にしたっていいだろとか
せめて、コードを毎回違う位置にロードしろとか、 スタックポインタも毎回初期化位置を変更しろとか
0586デフォルトの名無しさん
NGNGまーね。普通はそんなもんだとは思う。
多分今さらMSに言っても、.NETなら/GSオプションでおっけーなので移行しろー、
とか、商売に利用されそうだな。あんなもん気休めだろうに。
そういう意味ではVBはセキュリティリスクが少ない!?w
0587デフォルトの名無しさん
NGNGでかい口聞く割に内容がない。空気を読めよ厨房。
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG>>588 「長文」ちゅうのは「一行の長さ」についてのことだ。そんぐらい読み取ってくれYo!
で、VBの性能向上について、おまいさんの見解は?
0590デフォルトの名無しさん
NGNGぎゃはははははははは!
0591デフォルトの名無しさん
NGNGこわれちゃったみたいだな。w
それとも、何かを誤魔化すためのカモルラージュでつか?(・∀・)
で、見解は?
0592デフォルトの名無しさん
NGNGえ、俺部外者なんだけど。
0593デフォルトの名無しさん
NGNG>「長文」ちゅうのは「一行の長さ」
これは>>580の文脈の中での話ね。辞書的な意味と言っているわけでわない。
0594デフォルトの名無しさん
NGNGループん中で例外が起きてエラートラップに飛ぶと
そのエラーの他にもend withがねぇだのと文句言われるんだけど
これなんとかならない?
0595デフォルトの名無しさん
NGNGなるよ。
0596デフォルトの名無しさん
NGNG無駄な努力をしますね(プ
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG文句言われないけど?
Private Sub Command1_Click()
On Error GoTo e
Dim i As Long
With Me.Command1
For i = 100 To 0 Step -1
.Caption = 1 / i
Next i
End With
Exit Sub
e:
MsgBox Err.Description
End Sub
>>596
無知?(w
>>597
なる。↑の例みたいにWithを使って参照するものが一つだけなら意味無いけど。
0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGむしろそこまで気にしてコーディングされたプログラムそれなりに優秀と言えるだろう。
世界には動くのが精一杯のVBプログラムが山ほど溢れている。
0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNGchar *str = "hogehoge";
for(i=0;i<strlen(str);i++) do();
見たいに書いてる奴は、いただけない。
ちょっとした工夫は大事。
0604デフォルトの名無しさん
NGNGじゃあ
function hige( s:string;) : integer;
var i:Integer;
begin
for i:=1 to length(s) do ・・・
・・・
end;
とかを見たらどう思う?
0605デフォルトの名無しさん
NGNGVBの場合は一度しか実行しなかったような
0606デフォルトの名無しさん
NGNGいかにも。VBでは1回だけだね。
0607デフォルトの名無しさん
NGNG本当に?ループ内で文字列の長さが
変わる場合があるから最適化なんてできないと思うが。
C/C++もまた然り。
0608デフォルトの名無しさん
NGNGDelphiの場合は、評価は1回だけしかされない。
たとえ、ループ中にサイズが変更されようがループ回数は自動更新されないわけだ。
0609デフォルトの名無しさん
NGNGワロタ。
0610デフォルトの名無しさん
NGNGVisual <Beginner's> All-purpose Symbolic Instruction Codeなんだ。
初心者用のプログラミング言語。
やっぱり、C++こそ一番。Javaもけっこういい。
0611デフォルトの名無しさん
NGNGポリモーフィズムとかの概念があっても初心者用なのか。
名前に誤魔化されている奴多過ぎ。
そういう奴って権力に弱そうだなw
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNG○に適当な言葉を入れてあちこちにコピペしている奴がいる。
0614デフォルトの名無しさん
NGNGどこに?
0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNGクラス?VBの「クラスモジュール」のことか?
「ポリモーフィズムの概念」?
意味分かってて言ってんのか?
VBはなかなか便利だから嫌いじゃないが、こういう自分で喋ってることの
意味が分かってないようなヤツが大半占めてるからVBOnlyプログラマは困るねぇ。
ハッキリ言ってVBはまともなオブジェクト指向言語じゃないぞ。
0617デフォルトの名無しさん
NGNG>>613=VBしかできないくせに上級者気取りしてるアホ
0618デフォルトの名無しさん
NGNGhttp://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/polymorphism_02.html
http://www.seraphyware.jp/dev/tips/vb.tips.class.3.html
0619デフォルトの名無しさん
NGNGだれもそんな事言っていない。
準オブジェクト指向言語とは言えるが。
0620デフォルトの名無しさん
NGNGコピペしかできないくせに上級者気取り
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG重いじゃん。
0623デフォルトの名無しさん
NGNGと言うわけで終了。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNGVBなんか使わないで普通にCで速いアプリ作れ。
0626デフォルトの名無しさん
NGNG汚いからクソだろ
0627デフォルトの名無しさん
NGNG最速で挫折
0628デフォルトの名無しさん
NGNGそれが最高なんだが…
VBは依存性高いし言語使用糞だし…
0629デフォルトの名無しさん
NGNGC#でC/C++に負けないくらいの速いアプリを作ろうスレへどうぞ。
オマエの書いていることは、このスレの趣旨と実質的に同じ。
0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNG要するに大したものを作っていないと。
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNGプ
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNG午後のこ〜だDLL使えばいいから、作ろうとも思わないな
0637デフォルトの名無しさん
NGNGVBで作るということに意味があるんだよ。
VB製のエンコーダーってなんかスゲーじゃんかよ、
0638デフォルトの名無しさん
NGNGリソース節約も含めて言語仕様による
オーバーヘッドが目立つのかも
元来マクロに使われたりする簡易性がウリの言語だし
大規模化とか高速処理の追求は畑違いだと思う。
0639デフォルトの名無しさん
NGNGそりゃ出来たらスゲーかもね。
0640デフォルトの名無しさん
NGNGCで書けばポータブルで、一チップマイコンで使ったりも出来るのに。
Cで書けば、例えばDelphiにObjを取り込ませたり出来るのに・・・・
0641デフォルトの名無しさん
NGNGそんなこと無いよ。VBの遅い原因は標準関数などが
ActiveXになっていることによる関数呼び出しのオーバーヘッドと
文字列がBSTR相当(だっけ?)になっているせいだから。
VBもネイティブコードなんでメモリを処理するだけなら
最適化が違う程度のオーバーヘッドしかない。
0642デフォルトの名無しさん
NGNGVBで書いてもDelphiにCOMを取り込ませられるだろ。
0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNGVBなんて初めから候補にも挙がってないがな( ´,_ゝ`)プッ
ttp://dada.perl.it/shootout/
0645デフォルトの名無しさん
NGNG基本的に嫌いじゃないけども、気になるから使わないようにしてる。
0646デフォルトの名無しさん
NGNGitってイタリアのドメイン?
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNGそうだよな。大規模ならやっぱりCOBOLに限るよ
0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNGJavaがVBより早いってのはGUI以外の計算の話なんかな?
Javaより遅いGUIというのは信じられないが。
NetBeans使ってるけどエミュレータで動かしてるみたいだ。
0652デフォルトの名無しさん
NGNG実際VMだし
0653デフォルトの名無しさん
NGNG8Bit、16Bit全盛のころはアセンブリ言語で書くのが普通だったのが、32Bitの高速CPUが出てきたころには
Cなどの高級言語で書くのが一般的になった。
今時、アセンブリ言語でプログラムを組む機会はほとんどない。
このまま、CPUの速度が向上すれば、VM上で動作する言語でほとんどのアプリが作成されるようになるんじゃないの?
要するに、ハードウェアの進歩によって、実行速度よりも、簡単に開発できることが優先されるようになるってこと。
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG某はMSみたいなセコいことしてないし
0658デフォルトの名無しさん
NGNG.net Frameworkを入れて嫌な予感が頭をよぎり、
VS.netを入れようとして寒気がして、
IDEを起動してこりゃだめだと感じた。
いくらなんでも重すぎ。
0659デフォルトの名無しさん
NGNG重すぎって・・・何世代前のパソコン使ってんだよ。
0660デフォルトの名無しさん
NGNGソレダ!
インラインC萌え
0661デフォルトの名無しさん
NGNGPC-9801DOですが、なにか問題ありますか?
0662デフォルトの名無しさん
NGNGDOで使えるCPUアクセラレータってありましたか?
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNGIDEはVB.NETで書かれてないのに、IDEの速度とVB.NETの速度と
結びつけて考えるのか。
0665デフォルトの名無しさん
NGNG座布団全部没収ですよ
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNGソフトの微妙な速度も大事だとは思うが
いくら早かろうが客がクソといえばどんなに早くても、アルゴリズムがすごくてもクソっぽ・・・・
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
05/02/05 10:20:090671デフォルトの名無しさん
2005/05/16(月) 06:52:280672デフォルトの名無しさん
2005/05/16(月) 14:51:390673デフォルトの名無しさん
2005/05/19(木) 20:45:42って 大きいのですか?
0674デフォルトの名無しさん
2005/06/01(水) 01:19:404,5万行ぐらいでも重くはないけど。。。。。
VB6でコンパイルした物の体感速度は C++で作った物に比べて 3倍くらい遅い程度に感じる。
0675デフォルトの名無しさん
2005/07/08(金) 03:30:560676デフォルトの名無しさん
2005/07/10(日) 22:06:161万超えたVBソースなんか見たくないや。
>>674
そこまでの規模だったら素直にドトネトにせいと言いたい。
※簡単なアプリを簡単に作る。これがVBの美学だと思われ。
0677デフォルトの名無しさん
2005/07/11(月) 12:18:570678デフォルトの名無しさん
2005/07/11(月) 14:07:00だからこそ
>>そこまでの規模だったら素直にドトネトにせいと言いたい。
と書いたつもりだが。
>>677
局所的にクラス化する事はあっても、基本的には標準モジュールで
手続きチックに組んでるよ。
※VB6のクラスモジュールって使いにくいから嫌いだ。
(最近java三昧だったからかな。まあ、低脳なのは認める)
0679デフォルトの名無しさん
2005/07/17(日) 00:52:43作るためのものだからね。javaとかOOPから来た人には奇怪に見えるのも仕方ない。
VBのクラスモジュールにインターフェース継承だけが備わっているのも、
あれはもともと多態性を表現するためというよりかは、バージョンアップ時に
DLL地獄を回避するため、従来のメソッドの引数なんかを変えずにすますための
ものだから。
Class1にFoo(x%)があって、これをFoo(x&)に変えたい、とかいうときに
Class1_V2を作ってそこにFoo(x&)を書いてClass1でImplementする、みたいな。
たまに、インターフェース継承と包含を組み合わせて実装継承をVBで
擬似的に実現してみせてるページとか見るけど、そこまでしてVBでOOPに
こだわるもんでもないとおもう。
以前勤めてた職場で、VBの仕事なのに二言目にはじゃばじゃばじゃばじゃば
文句ばっかり言って仕事にならない奴がいて困ったことがあった。
「javaならこう書ける」「javaと違う」「javaのようにできない」etc。。。
なまじ「クラス」なんて名前が付いてるもんだから、javaと同じことができないと
「間違ってる!」っていうことになるんだろう。
その人、Win32のウィンドウクラスっていう言葉にもいちゃもんつけてた。
「なんでこれをクラスっていうの?おかしいじゃん」って。
おかしいのはお前のjava原理主義じゃないのか。
長々かいちまったよ。すまん
0680デフォルトの名無しさん
2005/07/17(日) 01:23:39・構造体と読み/書き関数があるとき、これをクラスに置き換える。
・厳密に型指定されたコレクションを、Collectionを包含して作る。(ヘルプに詳細な説明あり)
・いわゆるグローバル変数を散在させないように、アプリケーションの
ルートオブジェクトを作り、そのメンバとして集約する。
(たとえばPublic変数gConnectionStringがあったら、Applicationクラスを作って
Application.ConnectionStringプロパティに置き換える。
もちろんPublia Application As Applicationだけ必要だけど)
・コールバック関数を要求する関数が作れないので、代わりに、
特定の名前のメソッドを持ったクラスを要求するメソッドを作る。
ここでインターフェースが役に立つかも。
・WithEventsを利用して、複数のコントロールに書かなきゃいかんイベント処理を1カ所にする。
VBでこういう「まねごと」みたいなのを作ってなれておくと、
ドドネトやjavaに移行するとき楽じゃないのかな。
ぎゃくに、VBやってからOOP言語をかじってからVBを見直すと、VBで出来ること、出来ないこと、
いままでVBについて勘違いしていたことや見えてなかったことなんかが理解できて
おもしろい。
で結局、VBはVBに向いてることだけ作るのがいちばんだと思うよ。>>676に賛同。
0681デフォルトの名無しさん
2005/10/29(土) 18:31:14を使ってる人はいませんか。
0682デフォルトの名無しさん
2005/10/29(土) 18:36:040683デフォルトの名無しさん
2005/11/03(木) 22:24:51ランタイムがらみの理由だけで、VBでなくVBAで作られたバッチ処理がある
洒落んならん。インタプリタでバッチ。
ロジックをチューニングしまくったけどまだまだ改善の余地はある
まったく演算部だけでもVBかCで作りたいもんだ
0684デフォルトの名無しさん
2005/11/18(金) 05:31:590685デフォルトの名無しさん
2005/12/24(土) 13:47:39VB.NET2003に移植したら3倍くらい遅くなってしまいましたが、そんなもんなんでしょうか?
数値演算の速度は殆ど変わらないか、高速化する場合もあるとどこかで
聞いたような気がするんですけど、VB6の「配列の範囲チェックの削除」
とかの最適化が効いているのかなぁ。
そんなもんCで組めというのはその通りなんですけど、
VBの手軽さから離れられなくて…完全に厨です。
0686デフォルトの名無しさん
2005/12/28(水) 02:39:59.NETはネイティブアプリじゃないからな
場合によってはVBのネイティブコンパイルの方が速かったりする
0687デフォルトの名無しさん
2005/12/28(水) 23:40:07ngen
0688685
2005/12/29(木) 20:09:19ngenは遅さに気づいた時に試してみたんですけど、駄目でしたね。
ttp://www.microsoft.com/japan/msdn/net/general/dotnetperftechs.asp#dotnetperftechs_topic4
には、「前に述べたように、バージョン 1 (v1) の JIT は、コンパイラが行う最適化のほとんどを実行しますし、
次のバージョン (vNext) ではさらに高度な最適化が追加されて、いっそう高速化される予定です。」
と書いてあるから、VB2005Explessで性懲りも無くまた試してみようかと思ってたりしますw
0689デフォルトの名無しさん
2006/01/06(金) 00:59:27私はVB使いでないので的外れかもしれませんが、
.NETアプリはメモリーを結構食うので、メモリーが十分にあるか
確認してみるといいかもしれません。
0690デフォルトの名無しさん
2006/01/06(金) 17:36:070691デフォルトの名無しさん
2006/01/06(金) 18:49:46VB6の型宣言のまま移植したとか。あんま関係ないか
0692デフォルトの名無しさん
2006/01/06(金) 21:24:330693デフォルトの名無しさん
2006/01/08(日) 02:03:323倍っていくらなんでも遅すぎる気がするんだが。
0694685
2006/01/09(月) 15:55:17メモリは512MBつんでいてタスクマネージャ見る限りメモリ不足には
陥っていないように見えます。
>>691
型はVB6のLongをIntegerに書き換えたくらいですね。
>>693
うーんそうですか・・・
現在アルゴリズム自体を見直しているので2005への移植は
当分先になりそうですけど、他に数値解析プログラム組んでる人
とかがいたら速くなったか遅くなったか聞いてみたいですね。
0695689
2006/01/10(火) 21:45:21VB.NETで計算を早くする方法を探してみたら、偶然685さんの
別の書き込みを発見してしまった・・・(^^
可能性の一つとして、.NETは、もしかすると関数を呼び出す時の
オーバーヘッド(コスト)が大きいのかもしれませんね。
計算の部分をもし関数にして呼び出していたら、forループの中に
直接書き込んで試してみるのはどうでしょう。
あともう一つですが、ちょっとベンチマークを探してみました。
ttp://devnet.developerpipeline.com/documents/s=9856/q=1/cuj0507bruckschlegel/0507bruckschlegel.html
(もう少しわかりやすいのが、どっかにあったはずなんですが・・・)
ここのfigure 12,13を見ると、現状では.NETは行列(配列)の計算やループに
あまり強くない(あまり最適化されない)のかもしれませんね。
それに比較してVB6はきっちり最適化すると、計算はVCに迫れる速度が
出るという話を聞いたことがあります。ですからもし使うなら
まだ.NETにしない方が得策なのかも。
0696デフォルトの名無しさん
2006/02/08(水) 21:02:57僕はパソコン初心者の小学生です
VBってなんですか?
0697デフォルトの名無しさん
2006/02/08(水) 22:03:04オーストラリアのビールです。
http://www.fosters.com.au/enjoy/beer/victoria_bitter.htm
0698デフォルトの名無しさん
2006/02/08(水) 22:18:50お母さんと一緒にお風呂に入ったまま寝なさい
0699デフォルトの名無しさん
2006/02/09(木) 01:26:48マジレスするとVisualBasic Micoosoftの出した開発言語
もともとMicirosoft(というかビルゲイツ)はBASICで一山当てて
大きくなったところがあるせいか、かなり力が入っていて
ものすごく普及した。
しかし普及数が多く、とっつきやすいためにレベルの低い
プログラマが多く出たため、ネット上では馬鹿にされる傾向がある
何を思ったか2002年にVB.NETというものに変わり、名前は似ているが
中身はだいぶ違うものに変身した為、現在ちょっと迷走中
0700デフォルトの名無しさん
2006/02/10(金) 03:17:190701デフォルトの名無しさん
2006/02/10(金) 05:54:05ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcn7/html/vaconProgrammingWithVB.asp
0702デフォルトの名無しさん
2006/02/10(金) 06:32:35C/C++くらい理解出来るはずです。
0703デフォルトの名無しさん
2006/02/10(金) 09:21:410704デフォルトの名無しさん
2006/02/10(金) 11:24:42C/C++/C#って文法がキモッ
0705デフォルトの名無しさん
2006/02/10(金) 12:07:460706デフォルトの名無しさん
2006/02/10(金) 23:00:10そこでDですよ
>>704
BASIC/VBのがDANZENキモい
0707デフォルトの名無しさん
2006/02/11(土) 01:09:020708デフォルトの名無しさん
2006/02/11(土) 14:49:41C厨とかC#厨を呼び出す呪文を使ってみたらD厨が釣れた
0709デフォルトの名無しさん
2006/02/11(土) 19:56:09いや遊びだろwww
0710デフォルトの名無しさん
2006/02/11(土) 21:30:23VB.NET は 無印VBとは全く違うからな
まぁ、JAVAマンセーな奴らを VBに引きずり込みたかったんだろうよ M$は
0711デフォルトの名無しさん
2006/02/11(土) 22:10:56VB.NETは関係ありません。
0712デフォルトの名無しさん
2006/02/12(日) 01:02:09J#ってまだあったの?
0713デフォルトの名無しさん
2006/02/12(日) 02:02:110714デフォルトの名無しさん
2006/02/12(日) 11:42:20いやそれは無理がある
0715デフォルトの名無しさん
2006/02/28(火) 13:30:09VBは任天堂のバーチャルボーイのことです。
0716デフォルトの名無しさん
2006/03/04(土) 12:34:42バレーボールってのもありだぞw
0717デフォルトの名無しさん
2006/03/04(土) 18:54:580718デフォルトの名無しさん
2006/03/17(金) 00:08:50VBは言語がわからなくても使えるので、初心者でも一流プログラマーになった気になれる。
VC++は命令名が長くて覚えるのが大変。でも、使いこなせばかなりいい。
JAVAはiアプリ作るならかなり使える。
VBは、戦国無双やバイオハザードみたいな完全3Dゲームじゃなければ作れると思う。
VBでもゲームは作れる。でも、企業に入るならC++言語〜VC++言語じゃないのかな?
0719デフォルトの名無しさん
2006/03/17(金) 00:33:39( ゚д゚)ポカーン
0720デフォルトの名無しさん
2006/03/17(金) 06:22:270721デフォルトの名無しさん
2006/03/18(土) 15:05:380722http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 19:36:13TextSS のWindowsXP(Professional)64bit化おながいします
もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0723デフォルトの名無しさん
2006/03/18(土) 22:42:54よほど常識外れな作りしなきゃそんなに遅くも無いしさ。
それよりもC/C++で作られてる有能なアプリを超える者を作ろうぜ
0724デフォルトの名無しさん
2006/03/24(金) 15:44:320725デフォルトの名無しさん
2006/04/09(日) 20:55:21機械語でベタ打ちすればそれなりに速いコードになると思うがどうか。
0726デフォルトの名無しさん
2006/04/11(火) 13:54:14その程度の線形な改善よりも、アルゴリズムの改善の方が余程利くよ。
むしろポインタが使えないとアルゴリズムに凝れない部分も多いからダメだ
0727デフォルトの名無しさん
2006/05/06(土) 14:03:130728デフォルトの名無しさん
2006/05/07(日) 08:38:56おまえ、才能あるな。
0729デフォルトの名無しさん
2006/05/07(日) 09:18:39VBでグリグリ苦労して速いコード組むよりC/C++で普通に作りゃいいじゃない
当たり前の事だと思うんだが
なんでVB?ヒマなの?
0730デフォルトの名無しさん
2006/05/07(日) 12:44:060731デフォルトの名無しさん
2006/05/07(日) 14:09:35> むしろポインタが使えないとアルゴリズムに凝れない部分も多いからダメだ
アルゴリズムにポインタはほとんど関係ない。
0732デフォルトの名無しさん
2006/05/07(日) 14:38:44マネージドとかCLIとかそういう奴のことを言ってるのかも
0733デフォルトの名無しさん
2006/05/07(日) 14:47:08リストとか木構造とか、ポインタないと実装メンドクサイでしょ
0734デフォルトの名無しさん
2006/05/07(日) 15:25:23参照使えば普通に実装できるが?
0735デフォルトの名無しさん
2006/05/17(水) 16:45:240736デフォルトの名無しさん
2006/05/28(日) 12:21:56一般に配布するアプリならともかく
企業システムなら、
アルゴリズムよりDB(SQLチューニング)の方が
重要だからねえ。
■ このスレッドは過去ログ倉庫に格納されています