[過去ログ]
awkについて語るスレ $2 (1002レス)
awkについて語るスレ $2 http://mevius.5ch.net/test/read.cgi/tech/1172242542/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
693: 688 [sage] 2012/07/22(日) 09:36:17.43 >QMAX=9007199254740991 ワロタwww 俺のも確かにwhile(C[p+=1]=C[n+=1]);の部分で保持してるのすべて消費分だけ上に移動させてるのが無駄なので そのループが無い分は確かに早いはず。 あと、恥ずかしながら尋ねたいのですが、俺>>688の実装で上限超えたらバグるをkwsk なんか見落としてたのか今更ながら心配になってきた。 昔作ったやつなんで、結構な頻度使ってきたのだが今までバグに気づかなかった しかしデータをメモリ上に展開するからどうしても上限が出てくるな… awkで10GBぐらいの扱う時はgetlineでなんとかなるけど、やはりメモリマップやポインタが使えたら便利だよなぁ パッチ作ったら需要あるかな? http://mevius.5ch.net/test/read.cgi/tech/1172242542/693
694: デフォルトの名無しさん [sage] 2012/07/22(日) 11:41:46.83 >>693 691、ちょっと訂正。無駄にキュー使う分、元スクリプトから劣化してた。 > p+=RSTART-1; >- enQ(substr(A[i],p,RLENGTH)); >+ if(hitTop+1<i){ >+ A[++hitTop]=substr(A[i],p,RLENGTH) >+ }else{ >+ enQ(substr(A[i],p,RLENGTH)); >+ } > p+=RLENGTH; あと、良く考えたら出力先を別にするなら、そもそもキュー不要。 バグってのは687で数値上限云々と書いたとおり、 ”C[0]+=1”がawkの整数の精度誤差なし演算可能上限を考慮していないだけ。 どのawkも多分そうだと思うけど、手元の環境下での実行結果↓ C:\>gawk --version GNU Awk 3.1.7(windows special Nov 24 2009) C:\>gawk "BEGIN{print 9007199254740990+1}" nul 9007199254740991 C:\>gawk "BEGIN{print 9007199254740991+1}" nul 9007199254740992 C:\>gawk "BEGIN{print 9007199254740992+1}" nul 9007199254740992 実際は(hddやメモリが先に死ぬので) 一行でこれだけ正規表現がhitする事は事実上無いし、 仮に発生しても検索結果が潰れるだけで、気付かない筈。 http://mevius.5ch.net/test/read.cgi/tech/1172242542/694
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.046s