search this site:

Chaotic Neutral

左にも右にもよらず、自由な生き方探し。

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Windows Powershell ― %


.NETのCLR環境の困ったところは、速度よりもむしろ、メモリーを馬鹿食いするところだと個人的には感じている。Powershellでテキストファイルをメモリーに読み込ませると、ファイルの数倍のメモリーを使う。

$table =@{}
foreach($i in (type "list.txt")){
	$c = $i
	$c = ($c.split("第"))[0]
	$a = $c.split(" ")
	$c = [string]::Join(" ", $a[1..($a.count - 1)])
	$table[$c] += 1
}
return $table

これ↑をやると、list.txtが100MBを超えたあたりで、HDDがページファイルの読み書きでうるさくなる。100MBのテキストファイルを読み込むと、Powershellのメモリー占有量は1GBくらいにまで膨らんでしまう。

$table = @{}
type "list.txt" | %{
	$c = $_
	$c = ($c.split("第"))[0]
	$a = $c.split(" ")
	$c = [string]::Join(" ", $a[1..($a.count - 1)])
	$table[$c] += 1
}
return $table

これ↑なら大丈夫。foreach()と違って、%は1個ずつ文字列をメモリーに読み込み、処理に渡し、捨ててくれる。

コメントの投稿

URL
コメント
パスワード
秘密
管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://reviva.blog1.fc2.com/tb.php/1188-88516358
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。