- 1 名前:デフォルトの名無しさん [2017/03/25(土) 19:01:22.21 ID:bnfyNgvn.net]
- 質問する前にGoogleで検索しましょう。 www.google.com/
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。 ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 Javascript は Web 制作板、CGI は Web プログラミング板へ。 業界談義、愚痴はプログラマ板へどうぞ。 ゲーム関係の話題はゲーム製作板へどうぞ。 ネタ、板とは関係の無い話題はご遠慮ください。 前スレ スレ立てるまでもない質問はここで 146匹目 echo.2ch.net/test/read.cgi/tech/1487780317/
- 862 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 16:03:08.16ID:Pt9OawB6.net]
- >>847
自分がそうだからといって 他人もそうだと決めつけるのはよくない
- 863 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 18:42:31.25ID:kl7Ly5JN.net]
- >>845
Amazonでざっくり探してみてますが コンピュータ系だと会社で読む人に配慮してるのか意外固い表紙の本が多いです >>846 もっとポップなデザインだったと記憶しています コンピュータ関連の書籍の近くで見たのでグラフィックデザイン系の可能性もあります 引き続き探してみます お騒がせしました
- 864 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 18:59:35.17ID:hKe3x/Mw.net]
- image.itmedia.co.jp/nl/articles/1403/07/kuro_140307chinou02.jpg
人工知能? そういやPC買ってからはPC雑誌って買ったこと無いな
- 865 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 08:09:37.19ID:Jchfh+8+.net]
- メモリ上にあるデータを計算して複数のビットマップを生成、これらを乗算合成やコントラストの調整をした後に表示
これらの計算をほぼリアルタイムに行う必要があります。スクロールバーなどのUIから表示する場所を指示されたら 上記処理を実行し該当部分を表示する感じです データは多いと500MBを越える可能性があり、これらを事前に計算しビットマップ化することはメモリの使用量的に 現実的ではありません。数GB程度では収まらないと予想されます このようなWindowsアプリケーションの開発環境にC++ or C# or Javaあたりを考えていますがどれが向いていますかね? やはり開発の手間は掛かっても安定した性能を得やすいC++?C#やJavaでも何とかなる?後者の場合はGCも ちゃんと制御しないとゴミがたまってえらいことになりそうな気もします 普段はRubyを使っています。上記3つはどれもあまり使用経験がなく、特にC#やJavaは未経験といって差し支えない状態です また他に良さそうな開発環境があれば紹介してもらえると嬉しく思います よろしくお願いします
- 866 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 08:13:55.24ID:1s7BLiGf.net]
- >>851
言語よりもどれだけ最適化できるかによると思う Ruby+ライブラリで作ってみて、無理と感じたら別言語に移植と言った感じでいいんじゃないか
- 867 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 08:17:28.07ID:8fy8h9zZ.net]
- >>851
C++/CLIやJNIで計算部分をCで書いてGUI部分をC#やJavaで書くというのが現実的かな
- 868 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 08:17:31.80ID:K2XF16mV.net]
- >>851
ビットマップだからメモリ喰うんだろ。 pngでやれよ。
- 869 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 08:18:48.53ID:8fy8h9zZ.net]
- いや待てメモリ上に置いておくのにPNGはないだろ、処理ごとに一々エンコードデコード繰り返すのか?
- 870 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 08:23:25.15ID:1s7BLiGf.net]
- メモリが足りてるならビットマップでいいだろう
pngにすると超めんどくさいぞ
- 871 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 18:04:17.23ID:h716kJIh.net]
- >>851
Visual C++
- 872 名前:デフォルトの名無しさん [2017/05/19(金) 20:34:09.46ID:iLAnMNZa.net]
- linux mint18 32bit
python3をF5で実行できるエディターは無いでしょうか? Geany 1.27ではpython2.7なので、python3.5を使用したいと思ってます PC自体にはpytho3.5と2.7が入ってます
- 873 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 20:38:51.81ID:58Qpkunv.net]
- 実行命令持っててキーバインドいじれるエディタならどれでも
少なくともvimならちょっとしたスクリプト書けばできる
- 874 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 21:17:13.70ID:iLAnMNZa.net]
- >>859
ありがとうございます 設定を変更できる事を知りませんでした。 変更したら、python3が使える様になりました。
- 875 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 21:33:10.52ID:ZIGu+d
]
- [ここ壊れてます]
- 876 名前:YQ.net mailto: >>851
uiがそれほど複雑なものを要求されないなら、openframeworksとかどうよ [] - [ここ壊れてます]
- 877 名前:851 mailto:sage [2017/05/19(金) 22:29:18.30ID:Jchfh+8+.net]
- レスありがとうございます
少なくともでかいデータを扱う部分はがんばってC/C++で書いた方が良さそうですね GUIの候補は ・C# ←全く未経験 ・JavaFX ←Javaからは未経験 Rubyを使うなら ・CRuby 1.8(or 1.9)+wxRuby ←大昔にこの組み合わせでGUIツールを作ったことがある、 ・JRuby+JavaFX ←サンプルを動かしたことならある あたりでしょうか。不慣れなJavaのコードを最小化する事やパフォーマンスを考えるとJRuby+JavaFXか? それでもJavaの理解はある程度必要だと思いますが・・・ >>852 Rubyで書ければ楽ですし理想的ですけど、CRubyの場合は現在ネイティブで動くGUIツールキットが ないんですよね。一時期あったwxRubyを使おうとすると1.8や1.9あたりでの開発になってしまいます Ruby 2.xからネイティブなGUIを使いたければdl2経由でWindowsAPIやwxWidgetsAPIを叩くとか? JRubyからならJavaFXが定番らしい?ですがこちらもほぼ未経験です >>861 ググってみましたがリストとかボタンなどの標準的なフォームを扱うにはどうしたら良いんだろう・・・ スクロールバーを付けてでググったらWindowsのAPIを叩くって出てきましたし
- 878 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:59:14.47ID:UNasSbUs.net]
- 全部cでゴリゴリ書くという電波が
- 879 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 00:24:36.10ID:DVLho5Qf.net]
- UWPは選択肢にあがらないのかね
触ったことないから知らないけど
- 880 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 01:52:20.12ID:mBBESjva.net]
- 問題解けなくて、目標とやる気を失いました
何か楽しいことないですか?
- 881 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 02:08:02.44ID:oftSHlNU.net]
- 彼女を作ってください
- 882 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 02:37:04.64ID:xPYo2hCY.net]
- 楽しいこと?減量するんだ
- 883 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 03:17:35.49ID:WmFfeyqJ.net]
- HTML, CSS, JavaScript, Canvas(2D)
Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、 JS(ES5), Flash, PHP, C++, Java, C#, Python, Lua に書き出せる。 Windows8.1対応。IDEは、FlashDevelop 他には、ゲームエンジン Unity, Cocos-2dx(JS版), Godot 他には、C++/CLI
- 884 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 03:40:13.02ID:WmFfeyqJ.net]
- 他には、Linuxで、ffmpeg で変換するとか
ffmpegのフロントエンドの、VidCutter とか
- 885 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 05:40:05.62ID:WmFfeyqJ.net]
- 画像変換は、Linuxで、ImageMagick だったな
- 886 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 08:39:40.44ID:Ykf9CvnE.net]
- >>862
VS入れればC#もC++も入るっしょ。 そのままC#で全部書いても良いと思うけどね。 C#は起動というか、dll読み込みに時間かかるだけで、一回読み込めばPC再起動するまでC++と遜色無い速度出るよ。 起動も速くってなるとC++とMFCとか、で作った方が良いけどかなり作りにくい。 C#でUIポトペタで作った方が楽。
- 887 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 10:16:55.63ID:wFoQdJsm.net]
- >C++と遜色無い速度出るよ
これJITを使った処理系で良くいわれるけど 多量のデータをゴリゴリ計算する用途でコンパイラー系言語の代わりに使われている例ってほとんどなくね? Javaもそうだけどほとんどの場合は開発の省力化を目的として使われているような
- 888 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 11:04:30.72ID:Ykf9CvnE.net]
- そりゃ大量のデータ扱うようなのは使わなくなったメモリこまめに解放せにゃならんから、GC
- 889 名前:な言語には荷が重いけどね。
PCにメモリたくさん積んでればその分C++じゃないと行けない分野は遠ざかる。 試しに作って見て、駄目ならC++に作り直してC#から呼んでも良い。 [] - [ここ壊れてます]
- 890 名前:片山博文MZ mailto:sage [2017/05/20(土) 19:52:02.71ID:3NdrFBG3.net]
- 世の中には迷惑メールを自動で送信するだけでがっぽり儲けてる会社があるらしい。
- 891 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 21:02:06.20ID:WA6qSQf1.net]
- >>873
C/C++でもメモリが断片化するから、メモリをこまめに解放してないっての知ってる?
- 892 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 22:32:02.54ID:TX7Bd0Me.net]
- GCの詳細仕様は言語にもツールによるし、かなりめんどくさいから自分の得意言語でいくのが一番いいと思う
- 893 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 22:47:43.34ID:xPYo2hCY.net]
- >>875
言語側が断片化抑制のために即解放しない、などではなくて プログラマがどうメモリ管理するかの話だよな?
- 894 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 23:42:59.78ID:WA6qSQf1.net]
- >>877
同じだろ? GCもってない言語で delete object とする代わりに GC持ってる言語は object = NULL すればいいんだから deleteしたってすぐメモリが開放されるわけじゃない
- 895 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 23:51:06.92ID:UWBN1LZO.net]
- >>878
んな事あるか
- 896 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 00:38:47.10ID:KYYeGok8.net]
- GCの実装者にとってはどういう挙動をするかが
重要なところなんだろうけど、 GCの利用者=大部分のプログラマにとっては スコープがなくなった時に自動的にdelete object相当が 適切に実行されるってのが重要 それによってメモリがすぐに解放されるか、 一定時間後に解放されるかは重要ではない
- 897 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 00:53:48.53ID:lI2AjJAk.net]
- つまり>>878は、Cでmallocしたものをfreeしてもすぐ開放されないって言いたいのか
- 898 名前: mailto:sage [2017/05/21(日) 03:28:07.58ID:pUWFtSb1.net]
- >>879
>>878 は「処理系はfreeしたメモリを即座にOSに返したりはしない」ということをいいたいだけだとみた それならばわかる
- 899 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 05:32:29.80ID:9HtUCvpi.net]
- しかし>>873のGC関係の発言にレスつける形なので意味がわからん
- 900 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 05:47:01.90ID:YZtqITyu.net]
- 確かメモリクリーナーってアプリはメモリ圧迫してOSのメモリ断片化解消機能を意図的に呼び出すアプリなんだけど、そう言う意味じゃ大量にメモリ喰う時点で断片化はOSが解消してくれんじゃね?
- 901 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 05:52:37.15ID:VISjd5sh.net]
- 定数と変数について質問です。
例えば街づくりゲームがあったとして、空港を作ろうというときに、 滑走路の最小長と最大長の中から、ユーザに長さを決めてもらおうというとき、 最小長と最大長は定数で、ユーザが決める長さは変数がいいのかなと思いますが、 例えば最大長が3000mとして、ある時システムアップデートで、5000mまで作れるようになりましたというとき、 最大長を変える必要がありますが、定数は不変であるはずなのに変えないといけません。 となると、システムが指定する最小長や最大長なんかも、変数であるべきなのでしょうか?
- 902 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 05:55:50.19ID:YZtqITyu.net]
- システムとして動いてる時に変更されちゃ困るから定数。
定数だからって、プログラム書き換えちゃいけない訳じゃ無い。
- 903 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 05:58:22.66ID:YZtqITyu.net]
- 多分、消費税増税された時とか定数書き換えただけで増税対応版として売ってぼろ儲けしてる。
(そこしか変更してる訳じゃ無いと信じたいがw)
- 904 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 06:12:02.67ID:9HtUCvpi.net]
- >>885
何を定数とすべきかは開発作業上の視点で考えてもらうとして、別の観点で アップデートで一部データだけの差し替えで済むように、exe自身の差し替えをしないで済むように、 ということで変更されうる設定はデータファイルから取ってきて設定用変数にぶちこむ扱いのほうが
- 905 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 06:41:22.19ID:DM2pkhyK.net]
- >>887
それは普通のこと。それはまだいい 5%と8%が混在したらマジでヤバかった。全く想定外だからシステム思いっきり作り直すことになるところだったわ
- 906 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 06:45:31.91ID:YZtqITyu.net]
- そのための定数だわな。
- 907 名前: mailto:sage [2017/05/21(日) 09:12:21.88ID:pUWFtSb1.net]
- >>884
断片化の解消はOSでは無理,メモリークリーナーはがぜ
- 908 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 09:41:16.54ID:DM2pkhyK.net]
- メモリクリーナーってガセだったのか?
あれを使うと間違いなく軽くなったけど
- 909 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 09:52:46.93ID:fDsf7qWs.net]
- >>891
大きなメモリを確保する事で、物理メモリ上のデータをスワップファイルに吐き出させます。その後、確保したメモリを開放します。これを行った後は物理メモリに空きが出来るので、一時的にメモリ確保などの動作がスムーズに動きます。 www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33457&forum=7
- 910 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 10:03:39.77ID:DM2pkhyK.net]
- そんな力技だったのかw
てっきりGCをアプリやOSの代わりに強制的に行うソフトだと思っていたわ
- 911 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 10:08:56.48ID:fDsf7qWs.net]
- OSに保護されてる別アプリのメモリをどうやって解放しろと。
それが出来たらウィルス作り放題だわ。
- 912 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 10:15:41.36ID:01kZhcWn.net]
- スマップなら解散したよね
- 913 名前:885 mailto:sage [2017/05/21(日) 11:15:36.77ID:VISjd5sh.net]
- >>886-
ありがとうございます。 変えちゃいけないというわけではにと聞き疑問が解決しました。 定数変数の感性を引き続き鍛えることにします。
- 914 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 12:05:15.69ID:fDsf7qWs.net]
- >>897
多分普通のアプリなら>>888のやり方のが良いけど、ゲームだったらユーザーが勝手に設定書き換えてチート行為出来ない様にセーブデータとかはバイナリファイルにした方がいい。 フルスクリーンかウィンドウかみたいなゲームそのものの設定は設定ファイルで良いと思うけど。
- 915 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 12:09:49.56ID:KYYeGok8.net]
- >>884
> 確かメモリクリーナーってアプリはメモリ圧迫してOSのメモリ断片化解消機能を意図的に呼び出すアプリなんだけど、そう言う意味じゃ大量にメモリ喰う時点で断片化はOSが解消してくれんじゃね? ディスクと同じで断片化を解消するにはメモリ内のデータを移動しなきゃいけないが、 ポインタ(メモリ座標の生の値)を使う言語ではデータの移動はできない。 参照を使う言語であれば、可能かもしれないが(ただしOSの仕事ではない) またディスクは断片化していても、遅くなるだけでファイルを作成することはできるが メモリの場合は、断片化によってうまれて小さな空き領域に 大きなデータを作ることはできない。 何度もメモリの確保と解放を繰り返す処理を行うと、使えない小さな空き領域が たくさん作られていくことになる。
- 916 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 12:19:30.21ID:fDsf7qWs.net]
- >>899
>>893 まあなんだ。 断片化して来たら意図的にメモリ大量確保でスワップファイルに吐き出させて再配置させりゃあ良いってわけだな。
- 917 名前: mailto:sage [2017/05/21(日) 12:43:21.75ID:pUWFtSb1.net]
- でもユーザー空間での断片化はどうしようもないだろう?
ユーザーメモリ空間が有限である以上,断片化を解消する手段はないとおもうよ,32bit 空間ならば断片化でアウトとなる可能性は十分にあるのでは?
- 918 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 13:18:10.58ID:2TTm6ATP.net]
- んなのOSがスワップファイルから書き戻す時にどう再配置するかだな。
アプリのアドレスを順に詰めてくのに中身のアドレスも詰めていかない理由もないんだが。。。 こればっかりはな。 そうでなけりゃ自前で再配置するかってーとそんなバッドノウハウの本に出会った事ない。 大量にメモリ喰うアプリがある以上、そう言う本があってもおかしくないんだが。
- 919 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 13:19:57.96ID:9HtUCvpi.net]
- >>899
これは俺の頭が腐ってるのか ・OSがOS上で動作するプログラムに提供するメモリと、本当に物理的な物理メモリと、それぞれの中身は必ずしも同一でない、 だからswapなんてものが存在・機能しうるし、だから上で語られている「メモリクリーナー」は一応機能しうる、と思うのだが ・その言語を使ってプログラマが書くコードについてではなく、実際の動作について、ポインタ使わない言語ってあるのか
- 920 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 13:29:44.51ID:2TTm6ATP.net]
- >>903
大丈夫。腐ってない。 >>899がシッタカ押し通そうとして自爆しただけだ。
- 921 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 13:35:24.26ID:KYYeGok8.net]
- >>904
自爆してるのはお前だばーかw 俺はメモリクリーナーの話をしていない >>903はポインタを間違えただけだろうが それに気づかないお前ばマヌケだば〜かw
- 922 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 13:38:40.13ID:KYYeGok8.net]
- >>903
> これは俺の頭が腐ってるのか そうそうお前の頭が腐ってる 物理的な配置の話は関係ない。 物理的な配置が変わった所で論理的な配置は同一だ。 それはスワップした所で変わらない 論理的な配置が断片化しているのを 物理的な配置を変えた所で何も改善できない。
- 923 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 13:40:19.48ID:2TTm6ATP.net]
- >>905
はあ。。。 あのな? メモリークリーナーで再配置して動作が一時的とは言え改善するんだろ? アプリのガワだけ再配置しても中身が断片化してたら遅いままだわな? おk?
- 924 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:00:39.90ID:KYYeGok8.net]
- >>907
> メモリークリーナーで再配置して動作が一時的とは言え改善するんだろ? それは再配置したから改善したのではない。 単に「使用頻度の低いメモリを今すぐスワップファイルに押し出す」を実行しただけだ 「メモリをディスクに追い出しています。しばらくお待ちください。」と 今(実行したタイミング)で時間をかければ 後から(足りなくなった時点)で追い出す時間がなくなるってだけの話。 ディスクに追い出す処理を、今やるか後でやるかの違い。 それがメモリクリーナーの仕組み そして本当に使用頻度の低いメモリであれば効果はあるだろうが 実際のメモリクリーナーは使用頻度を見ていない。 メモリクリーナー以外のプロセスのメモリを追い出しているだけ。 必要なメモリも追い出すから「必要なメモリをディスクから読み取ってます」が 後から発生するので意味が無いと言われてる。
- 925 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:07:14.39ID:9HtUCvpi.net]
- >>906
875,878,880と来てたからOS管理の物理メモリ領域を考えてるのかと思っていた それで>>884はOS管理のメモリ全体の話として「メモリクリーナー」出したんだろうと認識していた しかしそうすると>>899がわけわからなかったので903を書いたところ、 906はプロセスが見てる仮想アドレスのほうだけ考えろという しかしそうすると>>875がわからん 現実にOSには返却されなくてもmalloc/free叩いてるプロセスから見たらしっかり解放されてんじゃね?と思うのだが さらにいえば、それはつまりプログラマ側が考えてメモリ確保/解放しろよという話であり、 (851のケースだと処理をある程度細切れにしたうえで、繰り返し動的に使うメモリ領域のサイズを固定にするとか) GCのある言語とないcのような言語とを比べる文脈で意味のある内容でもない という気がするんだが あとポインタ使わない言語の件もさっぱりわからん
- 926 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:19:31.56ID:hH55+ewD.net]
- >>908
語るに落ちたな。 >そして本当に使用頻度の低いメモリであれば効果はあるだろうが >実際のメモリクリーナーは使用頻度を見ていない。 >メモリクリーナー以外のプロセスのメモリを追い出しているだけ。 > >必要なメモリも追い出すから「必要なメモリをディスクから読み取ってます」が >後から発生するので意味が無いと言われてる。 その通りだ。 使用頻度無視というか、メモリークリーナーが最大使用頻度になる事で他の使用中のアプリまでスワップファイルに追い出すんだよ。 だから、おまいの言う動作が改善してるのはまだ使用頻度低いメモリが書き戻されてないからじゃあない。 全部スワップファイルに行ってるんだからな。 むしろ、お前さんの言ってる書き戻す最中はまだ書き戻ってないHDD上のスワップファイルにアクセスする頻度が多いからクソ遅い
- 927 名前:。
(使ったことあるなら経験あるだろ?) 全部書き戻ってから快適動作するけど、また時間が経てば断片化する。 一時的って言ってもそれなりに持続性はあるんよ。 [] - [ここ壊れてます]
- 928 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:27:24.18ID:hH55+ewD.net]
- >>909
おいらも分からん。 それじゃGC無い言語がゲームに向いてる説明にもならん。 仮にfreeして直ぐじゃなかったとしても、OSが解放おk出した時点で解放されるのに対してGCな言語は「まだだ!!まだ行ける」って離さない場合があるとかぐらいかね〜? まあ、断片化防ぐのにfreeを遅らせるとかは間違っちゃ。。。ん? メモリ確保した時点で断片化進んでるじゃんよ。 解放しても同じ場所が開くだけだからタイミング関係ねーわ。
- 929 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:27:39.54ID:9HtUCvpi.net]
- >>910
横からすまんけど >また時間が経てば断片化する。 この「断片化」ってOS管轄側のメモリであって、プロセスから見えてる仮想アドレス領域じゃないよな じゃないと筋が通らないし で、このOS側のメモリ断片化が、実際の(体感)性能にどんくらい影響与えるのか確認したURLとかもし知ってたら教えてくれんか
- 930 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:32:53.09ID:KYYeGok8.net]
- >>910
> 語るに落ちたな。 ↓ > その通りだ。 笑うところ? あってるじゃんwww
- 931 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:34:03.47ID:hH55+ewD.net]
- 結論としては構造体の中身の配置に気を付けて、隙間のある構造体を避ける。
リストより配列をなるべく利用して連続したメモリ確保を意識して、解放した時マダラ模様ができないように気を使う。 プログラマー側がメモリの断片化に対して出来ることってこのくらいじゃね?
- 932 名前: mailto:sage [2017/05/21(日) 15:34:34.31ID:pUWFtSb1.net]
- >>909
物理アドレスの断片化はOS/CPU のページングで解消できるが,論理アドレスの断片化はどうしようもない たしかに,プログラマ側からfreeされた領域を,うまくやりくりして断片化を少なくするのは,ライブラリのmalloc/freeの書きようによるが, 今,すでに断片化してしまった論理アドレス空間を連続化するのは,すでに断片化させてしまった以上ライブラリでは対処できそうにないし,OS側でも当然できない ポインタを使わない言語でのGC装備は断片化に対抗できるが,万能ではない,そもそもGCは余分な仕事をしているわけだし,私にはマーク&スウィープと比べて劇的によくなるアルゴリズムがあるとは思えない(これは主観) GCする他に変数の再配置もやるのか?なんだかメモリ管理だけでビジネスロジックを圧迫しそうな勢いじゃないか‥
- 933 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:35:31.07ID:hH55+ewD.net]
- >>913
抜粋したトコだけな。
- 934 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:40:57.93ID:KYYeGok8.net]
- >>912
hH55+ewDが言ってるのがOS管轄側のメモリ。 俺はそのOS管轄側のメモリ=物理メモリが断片化するという話はしてない。 物理メモリはいくら断片化しようが何の影響も与えない。 俺が話してるのはプロセスから見えてる仮想アドレス領域 malloc/freeを繰り返すと、その仮想アドレス領域は断片化する。 ただし断片化するから遅くなるという話はしていない。 断片化するから小さい空きメモリができまくるという話をしてる その小さい空きメモリは、OSからドカンと割り当ててもらった ある程度のサイズのメモリ領域に埋もれているので、 そのメモリはfreeしてもOSに返されることはない。 ドカンと割り当ててもらったサイズ単位で管理されているから。 mallocしするたびに数十バイトとちまちまとメモリをOSから もらってるわけじゃないということを分かってないのだろう
- 935 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:46:04.28ID:KYYeGok8.net]
- >>915
> ポインタを使わない言語でのGC装備は断片化に対抗できるが,万能ではない, > そもそもGCは余分な仕事をしているわけだし,私にはマーク&スウィープと比べて劇的によくなるアルゴリズムがあるとは思えない(これは主観) > GCする他に変数の再配置もやるのか?なんだかメモリ管理だけでビジネスロジックを圧迫しそうな勢いじゃないか‥ 君には基本的なソフトウェアの進化っていうのを教えてあげよう 「人間が楽をするために、コンピュータに仕事を押し付ける」だ コンピュータの仕事が増える? それこそがソフトウェアの正常な進化なんだが
- 936 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:47:09.75ID:hH55+ewD.net]
- >>912
んとな。 両方だよ。 OSはOSで複数のアプリをメモリに配置する。 確かページ単位とか言うので複数アプリの使用頻度高い所だけ置いてる。 どっちかつーとOSのは断片化し難い。 してもスワップファイルに追い出すだけだし。 勿体無いスペース出来て多目にスワップファイルに書き込まれるくらい? アプリがスワップファイルにアクセスする頻度上がって遅くなるだけ。 んで、アプリはアプリでメモリの確保と解放繰り返してたら断片化する。 大量にメモリ使って新しく置く隙間がなくなって、酷い場合はそれ以上確保できなくなる。 異常終了する。 普通そこまでメモリ使わないから意識することないだろうけど。 メモリリークはこのメモリ確保出来なくなって異常終了ってパターン。
- 937 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:49:29.50ID:9HtUCvpi.net]
- mallocが現実にどんなコードになってるかとか各種GC実装の中身とか
全然知らない俺が書いてるのはおこがましいかもしれないが >>917 >物理メモリはいくら断片化しようが何の影響も与えない これ詳しく頼む それと、一番大事なとこで、>>851のような 大きいデータを読んで大きいデータを生成しては破棄する処理を繰り返し行う場合、 GCのある言語を使うか、GCない言語を使うか、ってところはどう考えてるかスパッと聞きたい
- 938 名前: mailto:sage [2017/05/21(日) 15:50:12.50ID:pUWFtSb1.net]
- >>918
せいぜい first-fit-strategy を best-fit-strategy にするくらいでイイ線いってるとおもってる GC の威力は感じているよ,メソッドチェーンな書きようは C++ では考えられない でも,論理アドレスの断片化は,メモリ空間の拡大で解消するのがベスト,言語系でどうこうするのはどうかな?って感想なんだ‥
- 939 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 15:55:23.38ID:KYYeGok8.net]
- >>920
物理メモリはいくら断片化しようが CPU(ハードウェア)が備えるメモリ再配置機能によって 常に断片化してないように見せることが可能だから ハードウェアが備える強力な特殊能力よw
- 940 名前: mailto:sage [2017/05/21(日) 15:58:57.81ID:pUWFtSb1.net]
- >>920
物理メモリの断片化はCPUの機能であるページングで解消できるよ でもね,スラッシングを起こすようでは,そもそもそれは物理メモリが足りないんだと思うよ,メモリクリーナーは理屈は分かるがネーミング自体がうそ臭いね‥ 大きなデータを使うこととGCとは相関はないと思うよ,GCは余分なことをしている,という感覚は大事だね C/C++ で延命できる気は最近はしなくなってしまった,すっごくシビアなことをしているのでもないかぎりC/C++にこだわるのはどうかな? なんにつけ,とにもかくにも,障害の解消には物理メモリを増やすのが一番手っ取り早いと思うね‥
- 941 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 16:07:45.17ID:hH55+ewD.net]
- >>920
単に大きいファイル扱うならバッファ用意(メモリ確保)して、ファイルからバッファ分だけ読んで処理して書き出す。をファイルの中身全部読むまで繰り返す。 全部書き出したらメモリ解放。 C/C++でのメモリ確保と解放はゲームみたいに「このタイミングで止まると困る」ってのじゃ無ければ気にすることはない。
- 942 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 16:08:56.88ID:hH55+ewD.net]
- 気にすることはないってのは別にGCな言語でも良いってことね。
- 943 名前: mailto:sage [2017/05/21(日) 16:10:01.48ID:pUWFtSb1.net]
- ま,そういうことだろうね
- 944 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 16:12:35.19ID:KYYeGok8.net]
- なお、GCがなくてもメモリがスワップアウトすれば止まります
- 945 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 16:28:44.26ID:9HtUCvpi.net]
- >>922-923
すまん混乱してきた まずもってCPU(MMUというかTLBというか?)が物理/仮想のメモリアドレス変換を高速にやってるのは知らんかった しかし、するとこれはハード的な物理メモリと、OSが見てる物理メモリ(ハードからは仮想)と、OS上の各種プログラムが見てるメモリ(OSからは仮想)と、 3層構造になってるという認識で良いのか?(正しくは知覚してないだけだろうけど、ある意味GC言語だと4層) んでもう一つ、OS<->OS上のプログラム間ではやはり断片化は問題になったりしないのか? プロセスごとに空間作って提供してるんだし、swapファイル/領域持ってたりするんだから、OS側も対応表持ってるよねこれ そうなるとOSが見てるメモリについても断片化すると影響皆無とはならない気がするんだけども GC有無と大量データ処理は関係なくねとか ハード成長してんだからプログラマがガリッガリに管理しない方向のほうが良くねとか、については理解できる 個人的にはどうしてもそっちで考えちゃうが
- 946 名前:デフォルトの名無しさん mailto:sage [2017/05/21(日) 16:52:53.58ID:hH55+ewD.net]
- >>928
>>919も見て欲しいな。。。 OSもプログラムである以上、バグが全く無いわけじゃ無い。 >しかし、するとこれはハード的な物理メモリと、OSが見てる物理メモリ(ハードからは仮想)と、OS上の各種プログラムが見てるメモリ(OSからは仮想)と、 >3層構造になってるという認識で良いのか?(正しくは知覚してないだけだろうけど、ある意味GC言語だと4層) > >んでもう一つ、OS<->OS上のプログラム間ではやはり断片化は問題になったりしないのか? >プロセスごとに空間作って提供してるんだし、swapファイル/領域持ってたりするんだから、OS側も対応表持ってるよねこれ >そうなるとOSが見てるメモリについても断片化すると影響皆無とはならない気がするんだけども > 32bitOSに4GB積んでも3.5GBしか認識しないとかあったっしょ? あれは、OSは4GBまでしかメモリ扱えなくて、下位メモリをデバイスドライバとかiGPUのメモリに割り当ててるから、物理メモリにマッピング出来ないんよ。 3層構造って考えで合ってる。 ハードは物理メモリ。 OSは論理メモリ。 アプリは仮想メモリ。 GC言語は4層じゃなくて仮想メモリの解放を自動化してるだけ。 独自にアドレス持ってる訳じゃない。
- 947 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 15:11:59.91ID:I0Kgi1YL.net]
- このご時勢でWindowsアプリでメモリ断片化なんて本当に問題になるのか。
組み込みじゃあるまいし理解できん。これを理由にGC推しも理解できん。 性能最優先で最善を尽くしたいならc/c++一択、開発効率優先ならC#でもJAVAでも好きにしろ、で終わる話だろ。
- 948 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 16:09:46.85ID:3W7nNBo7.net]
- 速度を出すならアセンブリだ!
- 949 名前: mailto:sage [2017/05/22(月) 20:05:48.43ID:Zgh5eQVH.net]
- >>930
GC 推しなのは,メモリが逼迫する状況ではどっちでも手の打ち様がなく一緒だから
- 950 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 21:37:24.11ID:6t8os15O.net]
- >>930
- 951 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 21:38:09.23ID:6t8os15O.net]
- GC推しする理由は、開発効率以外にないと思うけど?
- 952 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 21:59:03.83ID:g3oHLvAy.net]
- 開発効率って言っても両方使えるなら対して変わらんけどな
- 953 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 22:11:51.19ID:6t8os15O.net]
- GCない言語で今使われてるのって
C/C++ぐらいでしょ? GCの有無とは関係なく、言語とそのライブラリで 開発効率が随分と違うんだが
- 954 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 22:13:23.96ID:6t8os15O.net]
- GCの有無とは関係なくじゃなくて
GCの有無以前にと言うべきか GCの有無でも開発効率は変わるが、 C/C++はそれ以前に言語レベルで開発効率が悪いわけで 対して変わらないという答えになるはずがない
- 955 名前:デフォルトの名無しさん mailto:sage [2017/05/22(月) 22:30:16.02ID:O7KSblrp.net]
- CやC++にはboehm-gcがあるがそれで開発効率が良くなるかは疑問だ
- 956 名前:デフォルトの名無しさん [2017/05/22(月) 22:36:03.33ID:FIg1n5Bp.net]
- 性能もC/C++とJava等で大して変わらないという答えになるはずがないな
- 957 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 01:32:32.30ID:VKoAE6j/.net]
- swift「わいもgcなんぞたよらんでぇ」
- 958 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 02:02:49.10ID:OrYmr6qc.net]
- >>940
それな。 GCは備えていないがswiftみたいに明示的に解放する 必要はない言語はなんて言えば良いんだろう
- 959 名前: mailto:sage [2017/05/23(火) 12:28:14.96ID:F0rvxaiH.net]
- >>939
あくまで、論理アドレス断片化等のメモリ管理上の話だったかと
- 960 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:00:11.06ID:3W0XlzKr.net]
- >>939
気づいたら、C# が C++ の速度を凌駕している! espresso3389.hatenablog.com/entry/2016/05/02/081308 「C# が C++ の速度を凌駕している」らしいので、C++側を高速化してみた qiita.com/YSRKEN/items/8b53b1a783191503560c 書き方次第ではある。
- 961 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:06:49.02ID:3W0XlzKr.net]
- まあJavaはポインタ無いから、でかいクラスを参照渡し出来ないからC#より高速化の手段少ないんだけどね。
確か引数内でnewするとかの裏技的なことで参照渡してた記事を読んだ気はする。
- 962 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:08
]
- [ここ壊れてます]
|

|