http://www1.axfc.net/u/3334871
なんか遅い気がするので修正頼む。
知恵袋よりいいかなと思って立てました。
多分改善点はあると思います。
ここ間違ってるってあったら修正します(ほぼ毎日20:00-21:00頃います)
多分何してるかは見たらわかると思います。
ではよろしく。
素人のインタプリタを速くするスレ
■ このスレッドは過去ログ倉庫に格納されています
1仕様書無しさん
2014/10/04(土) 20:01:10.182014/10/04(土) 22:50:19.41
以下Photoshop職人の手による匠のコラが始まります。
2014/10/05(日) 00:03:03.06
じゃあこれも頼んだ
http://ideone.com/FeUdtC
http://ideone.com/FeUdtC
2014/10/05(日) 08:16:06.00
>>1
とりあえず、if/elseの化け物みたいなの止めろ
switchのが早くなるが、
バイトコードやりたいなら↓みたいな、関数ポインタ使ってランダムアクセスさせたほうが早い
typedef void(*tp10e_operator_t)(unsigned char *mem, REGS *regs);
static tp10e_operator_t operator_table[sizeof char] = {
/*NOP*/tp10e_nop,
/*MOV*/tp10e_mov,
/*ADD*/tp10e_add,
//(ry
};
getargs_one/getargs_twoはswitchに切り替えろ。
getargs_one/getargs_twoがおそらく速度のボトルネックになるから最適化の余地はあるな。
ARGS_ONE/ARGS_TWOは.hで公開する必要ないし構造体である必要もない気がするから、いまその構造体のメンバつかってるのはローカル変数でもええやろ
あと、こんだけかけるなら言う必要ねーかも試練が、unsigned charとかはtypedefしたほうが楽じゃね?ってかバイトコードなら変数が何ビットなのか固定させとかんといかんと思う。
あと、used1とused2ってなに?これローカル変数でよくね?速度だすならグローバル変数より若干速くなるような気がするがc言語5年ぶりだから覚えてない。
あと、このソース(.c)の外部に公開しない関数ならstaticつけたほうが無難かな。
.hってインクルードガードしなくてええの?
一応ぱっと見こんなところだとおもう。
とりあえず、if/elseの化け物みたいなの止めろ
switchのが早くなるが、
バイトコードやりたいなら↓みたいな、関数ポインタ使ってランダムアクセスさせたほうが早い
typedef void(*tp10e_operator_t)(unsigned char *mem, REGS *regs);
static tp10e_operator_t operator_table[sizeof char] = {
/*NOP*/tp10e_nop,
/*MOV*/tp10e_mov,
/*ADD*/tp10e_add,
//(ry
};
getargs_one/getargs_twoはswitchに切り替えろ。
getargs_one/getargs_twoがおそらく速度のボトルネックになるから最適化の余地はあるな。
ARGS_ONE/ARGS_TWOは.hで公開する必要ないし構造体である必要もない気がするから、いまその構造体のメンバつかってるのはローカル変数でもええやろ
あと、こんだけかけるなら言う必要ねーかも試練が、unsigned charとかはtypedefしたほうが楽じゃね?ってかバイトコードなら変数が何ビットなのか固定させとかんといかんと思う。
あと、used1とused2ってなに?これローカル変数でよくね?速度だすならグローバル変数より若干速くなるような気がするがc言語5年ぶりだから覚えてない。
あと、このソース(.c)の外部に公開しない関数ならstaticつけたほうが無難かな。
.hってインクルードガードしなくてええの?
一応ぱっと見こんなところだとおもう。
2014/10/05(日) 08:47:56.48
>>3
なぜ今の時代にBASIC作ろうとしたしw
ってかどこの誰のソースだよw
あえていうと、まず速度出そうってプログラムじゃなさそうだから速くできるかは五分五分だな。
構文解析の部分は
Tokenizer.tokenize()で正規表現やめると早くなるだろう。
ってかbison使え。
実行部分は
まず、switchやめてMap使え。
あと
例外処理のtry-catchは使うな。
メソッド呼び出しが多すぎんだよ、速度出せってほうがもう無理だな
なぜ今の時代にBASIC作ろうとしたしw
ってかどこの誰のソースだよw
あえていうと、まず速度出そうってプログラムじゃなさそうだから速くできるかは五分五分だな。
構文解析の部分は
Tokenizer.tokenize()で正規表現やめると早くなるだろう。
ってかbison使え。
実行部分は
まず、switchやめてMap使え。
あと
例外処理のtry-catchは使うな。
メソッド呼び出しが多すぎんだよ、速度出せってほうがもう無理だな
2014/10/05(日) 09:19:22.53
横からだが、例外処理入れなかったら、例外が発生した時にどうするんだ?
2014/10/05(日) 09:28:09.72
速度出せって要求だから例外処理はtry-catchはしない。
全部自前で処理しろ。
全部自前で処理しろ。
2014/10/05(日) 11:32:23.49
それは非常に難しい要求だなw
なんせ、Javaは例外処理を前提で作られたライブラリだからなw
なんせ、Javaは例外処理を前提で作られたライブラリだからなw
2014/10/05(日) 14:00:01.09
例外処理やめろってのは言い過ぎたか。
まぁ、あっても速度が劇的にって期待できるわけでもねーしいいや
んじゃ全部のメソッドstaticにしようぜ
まぁ、あっても速度が劇的にって期待できるわけでもねーしいいや
んじゃ全部のメソッドstaticにしようぜ
10仕様書無しさん
2014/10/05(日) 17:47:26.37 Javaなら標準のトーカナイザ使おうぜ
http://docs.oracle.com/javase/jp/7/api/java/io/StreamTokenizer.html
http://docs.oracle.com/javase/jp/7/api/java/io/StreamTokenizer.html
11仕様書無しさん
2014/10/05(日) 18:20:30.90 こんな簡単に!
http://ideone.com/aimGgs
http://ideone.com/aimGgs
12仕様書無しさん
2014/10/05(日) 19:17:53.60 >>4さん
ありがとうございます
採用させていただきます。
あとこのインタプリタを仮想マシン(環境?)
に採用したのですが
なぜか上手く動きません。
ここにプロジェクトあげとくので
修正点などあったらご指摘お願いします。
仕様:
ベースアドレス:0x1000
CPUの処理構造体(REGS、TP10E_CALLBACK)512個
512コアを順番に切り替えて一命令ずつ実行
問題点:
(>>4さんのコード採用前・後ともに)
・実行が割り込み後の0x1067で止まる
・2コア目がなぜか0x1060で止まる
正常に動けば:
・タイトルが"window"というウィンドウが画面内に二つ出てくる
・そのうちひとつはもうひとつより少し(16ドット)右下
ここもよろしくお願いします。
ちなみに>>3
僕じゃないです。
ありがとうございます
採用させていただきます。
あとこのインタプリタを仮想マシン(環境?)
に採用したのですが
なぜか上手く動きません。
ここにプロジェクトあげとくので
修正点などあったらご指摘お願いします。
仕様:
ベースアドレス:0x1000
CPUの処理構造体(REGS、TP10E_CALLBACK)512個
512コアを順番に切り替えて一命令ずつ実行
問題点:
(>>4さんのコード採用前・後ともに)
・実行が割り込み後の0x1067で止まる
・2コア目がなぜか0x1060で止まる
正常に動けば:
・タイトルが"window"というウィンドウが画面内に二つ出てくる
・そのうちひとつはもうひとつより少し(16ドット)右下
ここもよろしくお願いします。
ちなみに>>3
僕じゃないです。
13仕様書無しさん
2014/10/05(日) 19:20:11.93 URL貼り忘れました
http://www1.axfc.net/u/3335645
http://www1.axfc.net/u/3335645
14仕様書無しさん
2014/10/06(月) 02:15:47.50 >>12
おまえは何を甘えているんだ?
デバッグさせるきかよ。
そも、前の修正で速度稼いだつもりだったけど、
512コアとか65536sheetとやらぶん回してたら速度なんて無理だよw
割り込みで本当に処理させるべき処理なのか?この辺の処理は。
仮想マシン上にダイレクトに処理が記述されすぎなんだが、もう一枚かませないとだめじゃね?
おまえは何を甘えているんだ?
デバッグさせるきかよ。
そも、前の修正で速度稼いだつもりだったけど、
512コアとか65536sheetとやらぶん回してたら速度なんて無理だよw
割り込みで本当に処理させるべき処理なのか?この辺の処理は。
仮想マシン上にダイレクトに処理が記述されすぎなんだが、もう一枚かませないとだめじゃね?
15仕様書無しさん
2014/10/06(月) 10:51:03.1016仕様書無しさん
2014/10/08(水) 03:38:12.44 >>5
javaってswitchのほうが速いんじゃないの?
javaってswitchのほうが速いんじゃないの?
17片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/08(水) 14:01:21.06 「クロスワード ギバー」Windows用ソフト
http://katahiromz.web.fc2.com/xword/
https://github.com/katahiromz/XWordGiver
これを速くして下さい。お願いします。
http://katahiromz.web.fc2.com/xword/
https://github.com/katahiromz/XWordGiver
これを速くして下さい。お願いします。
18仕様書無しさん
2014/10/08(水) 14:09:35.11 片山ってあのゆうちゃんの親戚筋?
19片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/08(水) 14:20:01.66 親族でも親戚でもないよ。。。
同じ苗字や同姓同名が多いのは知っているが。。。
同じ苗字や同姓同名が多いのは知っているが。。。
20仕様書無しさん
2014/10/08(水) 15:07:06.07 そりゃ実際に犯罪者と親戚だとしても堂々と親戚だなんて言えないわな
21片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/09(木) 15:24:59.33 http://katahiromz.web.fc2.com/xword/
https://github.com/katahiromz/XWordGiver
たくさんコアがあったら、10x10でもすぐ解が求められるかな???
マルチコアに詳しくないからわからない。だれか教えて
https://github.com/katahiromz/XWordGiver
たくさんコアがあったら、10x10でもすぐ解が求められるかな???
マルチコアに詳しくないからわからない。だれか教えて
22仕様書無しさん
2014/10/09(木) 21:57:36.61 ざっと眺めてみてよく書いたと思うよ。
何となくだが、細かい部分で高速化できる部分は散見されるが本質的なアルゴリズムの部分に踏み込むには骨が折れそうだw
XgSolveXWordRecurse/XgSolveXWordNoAddBlackRecurse/XgSolveXWordがどういう理由付けで
関数わけされたのかいまいちわからんし。。。
XgSolveXWord()のなかで、単語の配列(リスト?)でループまわしてるけど、
その中で、長さチェックしてる部分。これって事前に長さ別に配列に保持すると高速化できたりするかも。
あと、2313行目の後にbreak;入れると若干無駄がなくなるかな
何となくだが、細かい部分で高速化できる部分は散見されるが本質的なアルゴリズムの部分に踏み込むには骨が折れそうだw
XgSolveXWordRecurse/XgSolveXWordNoAddBlackRecurse/XgSolveXWordがどういう理由付けで
関数わけされたのかいまいちわからんし。。。
XgSolveXWord()のなかで、単語の配列(リスト?)でループまわしてるけど、
その中で、長さチェックしてる部分。これって事前に長さ別に配列に保持すると高速化できたりするかも。
あと、2313行目の後にbreak;入れると若干無駄がなくなるかな
23片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/09(木) 22:34:22.78 レビューありがとう。
確かにnCountは外に出した方がいいな。
2313行は、どこ?
確かにnCountは外に出した方がいいな。
2313行は、どこ?
24仕様書無しさん
2014/10/09(木) 22:58:23.49 xword.cppの2313行目の下にbreakじゃなくてその多重ループ抜ける処理かけば無駄なループが軽減できるってだけな。
nCount外に出すとかじゃなく単語探すのに、
先に探したい文字列の長さ決まってるっぽいからmap<length,list<word>>で先に分けておくと無駄なループが省けるってことだな。
nCount外に出すとかじゃなく単語探すのに、
先に探したい文字列の長さ決まってるっぽいからmap<length,list<word>>で先に分けておくと無駄なループが省けるってことだな。
25片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/18(土) 17:03:32.96 よくわからない。。。
Pull Requestしてくれないか?
Pull Requestしてくれないか?
26仕様書無しさん
2014/10/18(土) 22:53:23.82 pull request?俺に修正させる気?
27片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/18(土) 23:01:22.27 アマゾンギフト券3000円くらいで頼む。実測で高速化確認が前提で。
28仕様書無しさん
2014/10/18(土) 23:04:53.55 桁が3つ足りねえよクズ
29仕様書無しさん
2014/10/18(土) 23:52:11.58 久々にレス入れたと思えばくそみたいなこといいがやるのなw
30仕様書無しさん
2014/10/18(土) 23:55:17.43 3000円なんて手付金レベルじゃねえかw
31仕様書無しさん
2014/10/19(日) 00:14:25.92 前金で3000円、成功報酬で5万円かな
32片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/19(日) 00:47:32.44 長さごとに単語データをまとめるのをやってみたけど、
あまり早くならなかったんだよね。やり方が悪いのか
あまり早くならなかったんだよね。やり方が悪いのか
33仕様書無しさん
2014/10/19(日) 00:53:46.56 お前、素人じゃねえだろ
34仕様書無しさん
2014/10/20(月) 01:20:54.00 乞食のプロなのか?
36仕様書無しさん
2014/10/23(木) 02:10:09.14 Javaはtableswitchを使って高速化するべし
37仕様書無しさん
2014/10/23(木) 14:43:35.21 情報処理技術者試験のCOMET IIをtableswitchにしてみた
38仕様書無しさん
2014/10/23(木) 14:44:11.61 情報処理技術者試験のCOMET IIをtableswitchにしてみた
http://ideone.com/rPF3VH
http://ideone.com/rPF3VH
39仕様書無しさん
2014/10/23(木) 14:47:55.8140仕様書無しさん
2014/10/23(木) 21:12:51.03 引数が0個のときNOPが出るんだけど、
41仕様書無しさん
2014/10/23(木) 22:57:25.8742仕様書無しさん
2014/10/26(日) 02:54:47.0243仕様書無しさん
2014/10/26(日) 03:22:46.1344仕様書無しさん
2014/10/26(日) 03:30:52.8645仕様書無しさん
2014/10/26(日) 03:31:42.83 Mapというのは配列によるアクセスよりも速いのだろうか
46仕様書無しさん
2014/10/26(日) 10:24:12.33 北海道セラピー学院中嶋聡 死 ね
キモイで醜男
こいつセラピーとかいって人のクリ○リス触ってきたよ マジで死ね
キモイで醜男
こいつセラピーとかいって人のクリ○リス触ってきたよ マジで死ね
47仕様書無しさん
2014/10/26(日) 14:18:48.26 >>44,45
Mapって検索方法をハッシュ法使えってことだろ。
switchがテーブル化されること期待できるならswitchのが高速。
検索の速度においては
配列(ランダムアクセス) > ハッシュ法 >= リスト(シーケンシャルアクセス)
Mapって検索方法をハッシュ法使えってことだろ。
switchがテーブル化されること期待できるならswitchのが高速。
検索の速度においては
配列(ランダムアクセス) > ハッシュ法 >= リスト(シーケンシャルアクセス)
48仕様書無しさん
2014/10/26(日) 21:42:41.02 ハッシュって実装の仕方で差異が大きくないか?
49仕様書無しさん
2014/10/29(水) 23:32:16.13 え?
50仕様書無しさん
2014/11/01(土) 06:02:49.52 データの特性を見てシノニムが発生しにくいキーを生成するようにする
51仕様書無しさん
2014/11/01(土) 18:03:08.13 ランタイムで特性計算できたらカッコいいな。
52仕様書無しさん
2014/11/04(火) 18:38:29.26 http://ideone.com/jEwpHw
ひとまずLISPのトークン分解は出来た
ひとまずLISPのトークン分解は出来た
54仕様書無しさん
2014/11/08(土) 00:05:12.50 どの手法が速いかなんて個々のJVMの実装次第じゃねえの
考えにくいがJVMによっては配列がMapより遅くなることもありえるんじゃないのか
考えにくいがJVMによっては配列がMapより遅くなることもありえるんじゃないのか
55仕様書無しさん
2014/11/14(金) 10:39:04.39 c/c++の場合だけど配列でのジャンプがハッシュ使ってるコンテナより遅くなることはあった、ハッシュを工夫する必要すらなかった
その時一番速かったのは結局最適化前提のswitchで、じゃあ最初からswitch使えよって話なんだけど
長いswitch書きたくなくてswitchのコードを自動生成するツールを作った
その時一番速かったのは結局最適化前提のswitchで、じゃあ最初からswitch使えよって話なんだけど
長いswitch書きたくなくてswitchのコードを自動生成するツールを作った
56仕様書無しさん
2015/11/18(水) 05:22:02.99 BASICインタプリタを作るのとLISPインタプリタを作るのとどっちが楽?
スタックマシンで作るのとレジスタマシンで作るのとどっちが楽?
スタックマシンで作るのとレジスタマシンで作るのとどっちが楽?
57仕様書無しさん
2015/11/18(水) 09:38:10.89 お前ら利益追求しろよ!
IT財産
経営者 右肩上がり
技術者 右肩下がり
IT財産
経営者 右肩上がり
技術者 右肩下がり
58仕様書無しさん
2016/10/09(日) 16:49:57.77 インタプリタ
構文解析の使えば簡単
構文解析の使えば簡単
59仕様書無しさん
2017/06/10(土) 01:17:47.82 意味が分からない
60仕様書無しさん
2017/12/29(金) 22:06:07.22 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
L9UL2UMY6S
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
L9UL2UMY6S
61仕様書無しさん
2018/05/22(火) 13:10:43.24 とても簡単な自宅で稼げる方法
参考までに書いておきます
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
ENIYK
参考までに書いておきます
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
ENIYK
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【赤坂“サウナ火災”30代夫婦死亡】サウナストーンでドア割ろうとした可能性 非常ボタン作動しなかったか [ぐれ★]
- 【高市首相】「日本人が日本各地を旅行するのも大切」 中国からの渡航自粛巡り ★3 [ぐれ★]
- ルンバの米アイロボットCEO、倒産原因は「技術面で中国勢に4年遅れ」 [蚤の市★]
- 拡大中「お正月は休業します」百貨店やスーパー、飲食業界でも [ぐれ★]
- 立憲・小西洋之氏が「強力な法的措置」検討“デマ情報で注意” 国光文乃副外相に民事と「刑事告訴も」 [少考さん★]
- 統合中学の校名案「桜花」 特攻機名と重なり波紋 福岡・大牟田……「生徒が純真に考えた」と賛成意見も市民団体などが疑問の声 [少考さん★]
- 松本一本ねぎ100本を盗まれた長野県の小学校に奈良市議会議員がねぎ100本をプレゼント [592398663]
- サウナ死の松田夫妻、最後の手段としてサウナストーンをタオルで包みドアガラスを割ろうとしたか… [271912485]
- スマホで任天堂公式のスーファミエミュ出たら買う?
- 【訃報】日経平均株価マイナス1000円か [943688309]
- 【速報】フィンランド人、日本人に続々と宣戦布告www [793117252]
- ソープでディープキスしようとしても舌逃す嬢w
