はてなキーワード: gCとは
鈴川エディタやEmEditorで少ないメモリー使用量で巨大テキストをファイルを編集できるとうたってるが、.NETでも見事に再現できたぞ。
1.2億行×100文字の全置換えでGCのメモリー使用量は340MB程度で、行の操作は86MB程度、合わせて426MBだ。
その辺の.NET製テキストエディターコンポーネントに組み込んでも500MBぐらいで済むと思う。
(その代わりワークファイルは30GBぐらいは行ってるはず)
鍵はropeというデーター構造を使用することとropeにアクセスする際、ディスクに保存する機構を付け加えるだけだ。
特にソースコードで見るべき個所はBigList.cs、Node.cs、DiskPinableContentDataStore.csの所だけだ。
多少遅くて構わないなら、ディスクに保存することはそこまで難しくはない。
メモリーマップドファイルは何かと面倒なので使ってないが、.NETでMMDataStructuresとかメモリーマップドファイルを扱うやつがあるんで、メモリーマップドファイルでも行けるはずだ。
benchmark start
size:120000000
Allocated GC Memory:66,304bytes
Allocated GC Memory:101,257,168bytes
Allocated GC Memory:101,247,232bytes
Allocated GC Memory:333,371,424bytes
Allocated GC Memory:333,257,000bytes
Allocated GC Memory:331,904,816bytes
clear buffer
Allocated GC Memory:66,304bytes
Allocated GC Memory:86,939,136bytes
Allocated GC Memory:87,272,912bytes
clear buffer
Allocated GC Memory:69,448bytes
BigListに1.2億行*100文字=12GBのテキストを突っ込んでみた。
文字列操作のタスクマネージャーから見たメモリー使用量は500~900MB程度。
benchmark start
size:120000000
Allocated GC Memory:66,304bytes
Allocated GC Memory:101,257,168bytes
Allocated GC Memory:101,247,232bytes
Allocated GC Memory:333,371,424bytes
Allocated GC Memory:333,257,000bytes
Allocated GC Memory:331,904,816bytes
clear buffer
Allocated GC Memory:180,072bytes
Allocated GC Memory:4,916,166,568bytes
Allocated GC Memory:4,916,146,904bytes
clear buffer
Allocated GC Memory:172,104bytes
https://github.com/oonyanya/FooList/commit/e795913ef8c8fbd16e59d54048ff68a202ca7c1b
BigListの一部を再帰なしにしたけど、C#の最適化すごいな。
再帰なし。ブランチ rewrite_nonrecursive、Commit 84b25c1
https://github.com/oonyanya/FooList/commit/84b25c172b2f8792ad2d1a645c0b25ff7bf8093d
benchmark start
Allocated GC Memory:61,240bytes
Allocated GC Memory:199,685,064bytes
Allocated GC Memory:199,698,944bytes
Allocated GC Memory:345,442,528bytes
Allocated GC Memory:345,442,552bytes
Allocated GC Memory:345,442,672bytes
clear buffer
Allocated GC Memory:82,728bytes
Allocated GC Memory:41,048,400bytes
Allocated GC Memory:41,048,464bytes
clear buffer
Allocated GC Memory:82,984bytes
再帰あり
benchmark start
Allocated GC Memory:60,752bytes
Allocated GC Memory:199,622,776bytes
Allocated GC Memory:199,636,920bytes
Allocated GC Memory:369,227,696bytes
Allocated GC Memory:369,227,696bytes
Allocated GC Memory:369,227,840bytes
clear buffer
Allocated GC Memory:82,728bytes
Allocated GC Memory:40,996,432bytes
Allocated GC Memory:40,999,688bytes
clear buffer
Allocated GC Memory:82,984bytes
C#などコンパクションあり世代別GCを使った場合の話。参照型だとまた話は変わってくる。
http://s170199.ppp.asahi-net.or.jp/vivi/docs/buffer/edit_buffer.php#measure
つらい。
gap_vectorは少し早い。
何だよ。フィナボッチ数列にバランスの取れたノードを放り込んで再構築って。
操作自体はAVL木のリバランスよりははるかに楽だけど、こっちはこっちで訳が分からん。
ただ、テキストの操作はgap_vectorなみにやりやすい。
なお、既存のライブラリーはライセンス的な意味で地雷だったりする。
CPUが違うので参考程度に。
構築速度:gap_vector < rope <<< list
64、ゲームキューブ、Wii Uは当時から失敗のイメージしかないだろ
SS、PSによる、高性能かつCDによる大容量かつ低価格のゲームが席巻してたのに
PS2、DC時代はGCでようやくROMに移行して頑張るかと思いきや独自のゴミディスクとクソ微妙なコントローラーで完全に失速
調子に乗ってWii Uとかいうどこに需要があるのか分からんゲーム機だして大爆死
一方でゲームボーイ部門はほぼずっと好調で、DSは後にiPhoneを産むパラダイムシフトを起こした傑作
そのあたりの反省とWii Uの反省を踏まえてSwitchで大成功
以下のテクニックを適切に組み合わせることで、Pythonコードのパフォーマンスを向上できます。
RopeもといBigList+GapBufferでさくさくエディターの置き換え処理をやってみた。
使用したマシンはCore i7 14700、メモリー32GB、Intel ARC A750。
100万行×100文字を置き換え。
replace1は3文字削除の3文字挿入で、3.5秒ぐらいで終わる。
replace2は3文字削除の4文字挿入で、4.9秒ぐらいで終わる
replace3は4文字削除の3文字挿入で、3.6秒ぐらいで終わる。
enumratotionはNULデバイスへの保存で、1.1秒で終わる。
benchmark start
Allocated GC Memory:60,600bytes
Allocated GC Memory:199,388,824bytes
Allocated GC Memory:199,405,136bytes
Allocated GC Memory:368,390,560bytes
Allocated GC Memory:368,390,560bytes
Allocated GC Memory:368,390,736bytes
clear buffer
Allocated GC Memory:84,360bytes
100万行の行とインデックスの変換テーブルの追加と更新処理はこのくらいで終わる。
変換テーブルの処理は構築が0.2秒、行が増えない更新は0.1秒ぐらいで終わる。
Allocated GC Memory:32,805,312bytes
Allocated GC Memory:32,811,000bytes
clear buffer
Allocated GC Memory:84,616bytes
以下、ソースコード。
一次元インデックスから二次元インデックス、すなわちバイト数であらわされる位置から行と桁への変換がテキストエディターだとよく発生する。
この変換を素早くするために変換テーブルを作るのだが、普通に作ると更新の時にO(N)かかる。
さくさくエディターの作者は局所的行更新手法で殆どの場面ではO(1)、最悪はO(N)にしていたが、色々と事故が発生しやすい。
特にstepRowをまたぐ状況でテーブルのほぼ全部の更新を避けようと思うと事故りやすい。
俺は何度も事故を起こした。
そこで別のやり方でオーダーを削減してみた。
https://github.com/rirufa/FooList/blob/main/List/BigRangeList.cs
考え方は至極単純でRopeをたどるときに変換テーブルの長さを覚えておき、ついでに変換を済ませておこうというごくごく簡単なものである。
この方法により、変換テーブルの更新はO(Log N)+M、探索はO(Log N)+O(Log M)程度で済ませられるようになった。
局所的行更新手法に比べるとだいぶ遅いが、Mが十分に小さければそこまでコストはかからないはず。
ただし、マーカーみたいに連続していないものを放り込んだら、うまく動かないのでそこはご了承いただきたい。
Allocated GC Memory:32,803,672bytes
Allocated GC Memory:32,809,360bytes
clear buffer
Allocated GC Memory:82,976bytes
https://github.com/rirufa/FooList/blob/main/EditorDemo/Program.cs
BigList<T>の内部で使われているやつをGapBuffer<T>に置き換えてみたら、リーフノードのサイズが32768だと遅くなるけど、最大メモリー使用量はそこまで変わらんな。
benchmark start
Allocated GC Memory:60,232bytes
Allocated GC Memory:199,389,088bytes
Allocated GC Memory:199,404,752bytes
Allocated GC Memory:368,390,176bytes
Allocated GC Memory:368,390,176bytes
Allocated GC Memory:368,390,320bytes
clear buffer
Allocated GC Memory:83,992bytes
benchmark start
Allocated GC Memory:60,232bytes
Allocated GC Memory:332,559,240bytes
Allocated GC Memory:332,583,016bytes
Allocated GC Memory:369,076,056bytes
Allocated GC Memory:369,076,056bytes
Allocated GC Memory:369,076,200bytes
clear buffer
Allocated GC Memory:83,992bytes
ただ、ブロックサイズを32768にしても、最大で1.2倍程度しか遅くならず、文字数が変わらないなら、2割程度早くなるので、ブロックサイズをある程度大きくした方がいいようだ
45,000,000 転生したらスライムだった件 GCノベルズ
30,000,000 ソードアート・オンライン 電撃文庫
17,000,000 ダンジョンに出会いを求めるのは間違っているだろうか GA文庫
14,850,000 無職転生~異世界行ったら本気だす~ MFブックス
14,000,000 魔法科高校の劣等生(原作小説) 電撃文庫
13,100,000 ソードアート・オンライン 電撃文庫
13,000,000 Re:ゼロから始める異世界生活 MF文庫J
テキストエディタを高速化するためにある人が書いたBigListを改造して、リーフノードをリンクドリストでつないだら全列挙が早くなって、スタックオーバーフローしなくなった。
ただ、その代わり元々のコードにあったノードの共有機能はいらなそうなので省くことにした。
Core i5 10400F、メモリー16GBで、100文字×100行=1億文字を突っ込んで、あれこれ操作した場合はこのくらいの速度で動く。
benchmark start
Allocated GC Memory:60,392bytes
Allocated GC Memory:416,037,968bytes
Allocated GC Memory:416,082,104bytes
Allocated GC Memory:416,082,272bytes
Allocated GC Memory:416,082,296bytes
Allocated GC Memory:416,082,440bytes
clear buffer
ListやGapBufferだとGCに優しくないけど、BigListだとLOH入りしないので、GCに優しいのだ。
その代わり速度はBigListの中身はRopeなので、少し遅くなるのだ。
Ropeで、リーフノードをリンクドリストでつないだ場合、挿入と削除、追加、ランダムアクセスはO(Log N)、全列挙はO(N)なのだ。
MITライセンスなんで商用でも問題ないけど、元々のBigListのライセンスに不穏なことが書いてあったので、気になるなら、自分で書き直したほうがいい。
The rebalancing algorithm is from "Ropes: an Alternative to Strings", by
Boehm, Atkinson, and Plass, in SOFTWARE--PRACTICE AND EXPERIENCE, VOL. 25(12), 1315–1330 (DECEMBER 1995).
https://www.cs.tufts.edu/comp/150FP/archive/hans-boehm/ropes.pdf
http://hvivi.dyndns.org/sse/replaceAll.html
さくさくエディタのまねをして全置換えでベンチマークを取ってみた。
benchmark start
Allocated GC Memory:60,392bytes
Allocated GC Memory:440,048,840bytes
Allocated GC Memory:440,082,632bytes
Allocated GC Memory:440,082,656bytes
clear buffer
Allocated GC Memory:82,280bytes
Rope<T>は削除と置き換え、文字列のランダムアクセスがO(log N)なのでさくさくエディタに比べると遅い。
ゲハですら、Switchの市場を捨てない&引き延ばすための戦略って2021年時点でちゃんと理解してるのに、
増田 (anond:20250118191314) よ・・・どういう世界線に住んでるんや?
新型Switchなんて意味ないだろNew 3DS専用ソフト何本出たか知ってる? https://krsw.5ch.net/test/read.cgi/ghard/1622215395/
1 名無しさん必死だな 2021/05/29(土) 00:23:15.18 ID:fgYUp6PE0
●バッケージ版
●ダウンロード版
ひよこまみれ
限界!山積みバトル
かいぞくポップ
6180 the moon
SHOOT THE BALL
BOX UP
Minecraft : New Nintendo 3DS Edition
計16タイトルのみww
旧型をサポートしないと本数売れない
結局新型なんて意味がなくなるよ
3 名無しさん必死だな 2021/05/29(土) 00:28:11.37 ID:rDsZYYlJ0
そんな手間かからないように
5 名無しさん必死だな 2021/05/29(土) 00:30:39.78 ID:R6H1uRCM0
全然覚えてないけど岩田がNXはスマホのOSみたいにするみたいなこと言ってなかったっけ
6 名無しさん必死だな 2021/05/29(土) 00:32:55.02 ID:FsJWPK/Cr
9 名無しさん必死だな 2021/05/29(土) 00:36:07.03 ID:aRbFSPT+a
>>5
エヌビディアとの関係が切れん限り、Switchプラットフォームはどんどんマイナーチェンジ繰り返して拡大するぞ
11 名無しさん必死だな 2021/05/29(土) 00:38:10.96 ID:X1CrEsdW0
13 名無しさん必死だな 2021/05/29(土) 00:39:45.14 ID:Ym1gzq820
>>10
通常3DSだとゲーム中にホーム画面見られないゲームとかも、new3DSでは見られたり利点があったけど
17 名無しさん必死だな 2021/05/29(土) 00:49:26.67 ID:+YdgeZRGM
new3DSは一度使ったらもう無印3DSには戻れないくらい快適であった
SwitchSuperもそんな感じでいいんだよ
28名無しさん必死だな 2021/05/29(土) 00:58:55.00 ID:OdfqCDWga
>>1
30 名無しさん必死だな 2021/05/29(土) 01:05:19.69 ID:Ym1gzq820
>>26
38 名無しさん必死だな 2021/05/29(土) 01:13:40.13 ID:IIne6EiWM
>>30
https://ga-m.com/image/news/2015/12/01/mhx-new-3ds-syorisokudo-5.jpg
旧3DS:21秒
41 名無しさん必死だな 2021/05/29(土) 01:20:16.27 ID:POx1Vs64M
PS5のしょぼい台数でもマルチになるんだから新switchにもマルチが加わるわけよ
46 名無しさん必死だな 2021/05/29(土) 01:27:58.68 ID:SJF6co710
ポケモンサンムーンが発売して、これだけロード差があると知ってnewを買いに行った思い出がある
https://twitter.com/zalwa13/status/802709354541522944?s=21
https://twitter.com/5chan_nel (5ch newer account)
50 名無しさん必死だな 2021/05/29(土) 01:41:33.68 ID:Ym1gzq820
>>46
俺は発売日にnew3DS買ったけどね
54 名無しさん必死だな 2021/05/29(土) 01:50:14.67 ID:xa7O/ZJ3M
ps4proに専用ソフトなんてでた?と言うとプレステはクソって事になるらしい
55 名無しさん必死だな 2021/05/29(土) 01:50:36.81 ID:cmXzDZFp0
PS4PRO
一個だけあったわ
56 名無しさん必死だな 2021/05/29(土) 01:51:39.72 ID:z1KgPq8IM
new3DSとは決定的に情勢が違うところがあってな
DLSSやスペックアップの件含めると
AAA級も新型Switch・PS4・PS5マルチでソフトは出せるんだよ
任天堂ハードでは新型Switch専用ソフトになるが、広い目で見るとマルチ
コレだとメーカー側にも利点がデカいから「新型Switch専用ソフト」(PS系マルチ)は出る
60 名無しさん必死だな 2021/05/29(土) 01:55:55.00 ID:z1KgPq8IM
既にサードパーティも新型Switch専用ソフト(PS系マルチ)を作り始めてる
63 名無しさん必死だな 2021/05/29(土) 02:01:17.38 ID:6jzElI4a0
76 名無しさん必死だな 2021/05/29(土) 02:28:47.60 ID:eY7TB5qv0
>>56
なるほど確かにswitchとしては新型専用でも他社据置とマルチに出来るならリスク薄いもんな
81 名無しさん必死だな 2021/05/29(土) 02:40:40.32 ID:z1KgPq8IM
>>76
これこそが当面の主目的だろうと思うわ
Wii以降のPSvs任天堂は、事実上の棲み分け状態で正面勝負ではなかったが
89 名無しさん必死だな Y2021/05/29(土) 03:49:26.73 ID:3RfbOxlt0
新型さっさと出して欲しいわ、専用ソフトなんて求めてない
104 名無しさん必死だな 2021/05/29(土) 09:29:49.97 ID:T/DM2I0N0
外されてるからね
119 名無しさん必死だな 2021/05/29(土) 15:20:03.00 ID:HQ4ciMQ4rNIKU
ホントにNew3DSと同じようにロード改善とか動作安定とか程度の差しか無いと思うし
それしか無くてもいいと思う
AAA(笑)は新型スイッチ専用でマルチしてくるかも知れないけど、
そんな数売れなさそうなマルチなら出す意味薄すぎだから結局出さなそう
私はアメリカに正当な手段で移民しGreen Card(GC)を取得した現在でもこちらで暮らしている。
最近、不法移民およびアメリカ移民局(USCIS)、アメリカ政府への行き場のない憤りが限界に達し、どこにも吐き出す場所がないのでここに書かせていただく。
2022年位から日本でも報道されていると思うが、世界各国からメキシコを経由してアメリカに不法入国し、難民申請をしてアメリカに居座るものが多くいる。そして彼らはアメリカ市民や我々のような移民が収めた税金を食いつぶしながら何年も衣食住に不自由することなく生きていけるのだ。正当な手段で移民してきた我々が怒りを感じられずにいられるだろうか。
南米経由で入国してきた不法移民はまず指定された日時に移民裁判所に出廷し、各々の判決の結果によってアメリカに滞在できるか国外追放されるか決定される。しかしながら、その数が多すぎて裁判の日程が数年というのが状態化しており、その間彼らは自由に働いたりすることができる。NYCなどのリベラルな都市ではホテルの部屋があてがわれ何ヶ月も快適な生活をすることができた。例えばNYCでは過去二年間でおよそ$5 billion (約7,900億円)が不法移民のために使われている。このため、週末の間図書館が開かなくなったり、アメリカ市民のホームレスなどへのサービスが低下し、本当に必要なところに予算が割けなくなっている。
このようなことから、私は不法移民が嫌いだ。本当に耐え難い境遇から脱するためにアメリカへ不法移民するものもいるだろうが、そのうちの多くが経済的な理由できているものが多い。その証拠に中国からや情勢が安定しているアフリカ諸国から来ている不届きなものも多い。Tiktokでどうやってアメリカで難民申請する方法を解説しているものもいるらしい。
USCISはDHS (Department of Homeland Security)の一部であるが、その予算の大半はアプリケーションの手数料で賄われている。それにも関わらず、膨大な数の不法移民への対応にその多くが割かれ、正当な手段でビザやGCを取得しているものへの対応がおざなりになり、アプリケーションの結果が出るまで何年も待たされるのだ。
私もGCの更新にかなり時間がかかり、毎日ストレスが貯まるばかりであった。
過去四年間バイデン政権では不法移民の対応をいくつもの大統領令を使用して軟化した。その結果、先述のような問題が発生している。最近になり、メキシコとの国境での難民申請に制限をかけているが、もう後の祭りである。
民主党と共和党のディビジョンにより過去数十年移民法が改正できていない。移民を政治問題にしたせいで、アメリカ国民の中でも移民問題を話すことがタブーになったりと散々である。民主党は不法移民に寛大な方針を示しているが、共和党は不法移民への厳しい姿勢だけでなく、合法移民に対しても不自由になりうる制作を実施しようとしている。
また、アメリカでは多くの農林水産関係企業が不法移民を利用して、ビジネスを行っている。その企業の多くが政治家に多くの献金やロビー活動をしているため、移民関連法の改正が積極的に行われないことにも繋がっていると言われている。
アメリカへの移民状況は正直者が馬鹿を見るということの典型だと思う。正式な手順でアメリカに移民をしようとすると、何千ドルも取られた上で何ヶ月、下手すると何年も待たされることがある。一部の例外を除き、そのアプリケーションの結果がでるまで仕事ができない。
前回の下院選で共和党が過半数を取得したので、移民関連法が改正される可能性があるが、共和党なので移民を制限する方向に動く可能性もある。そうなった場合、日本に永住帰国したほうが良い生活がおくれるかもしれないと考え始めた。
駄文で申し訳ないが、行き場のないこの気持ちを吐き出し必要があった。XやRedditなどのソーシャルメディアでこのようなことを書くと最悪解雇されたりなどの問題が起こりかねないのでここを使用させてもらった。