[過去ログ] スレ立てるまでもない質問はここで 147匹目 [無断転載禁止]©2ch.net (959レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1: 2017/03/25(土)19:01 ID:bnfyNgvn(1) AAS
質問する前にGoogleで検索しましょう。 外部リンク:www.google.com
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。

前スレ
スレ立てるまでもない質問はここで 146匹目
2chスレ:tech
833: 片山博文MZ ◆T6xkBnTXz7B0 2017/05/16(火)23:26 ID:FSh1B7bo(5/5) AAS
mp3は特許切れてaacに軍配が上がる
834: KAC 2017/05/17(水)00:17 ID:gfAVX0wE(1/3) AAS
>>832
矛盾してるとは思ってないよ

質問は
「儲かるプログラミング分野を教えてください即効性があればうれしいです 」
だけだから、本人にできるかどうかは別問題

実際のところ、ID:iIGA/64l(>>815)の指摘が一番正しいとは思うが
だからこそ「いろんな研究者がやろうとしているができていない」分野を紹介した
835: 2017/05/17(水)00:20 ID:mr7LCBOo(1) AAS
儲かる分野ってCOBOLのような分野のことではないのか
836
(1): 2017/05/17(水)11:46 ID:nXumNQws(1) AAS
キチガイ連発で思ったより人に嫌われててワロタ
837: 2017/05/17(水)12:08 ID:qRRgoi7m(1) AAS
>>836
落ち込むなよ気にしたら負けだ
838
(2): 2017/05/17(水)13:39 ID:uIAEFAPH(1) AAS
幅優先探索で始点〜終点の経路を描画する段階まで実装出来たのですが、終点まで達すると考え得る全経路を一覧表示したいです。

幅優先は並列で探索するものと認識していますが、この並列処理中に終点まで到達する経路情報を保存するにはどんな処理が必要になるのでしょうか
839: 2017/05/17(水)14:13 ID:bdvqA1ry(1/2) AAS
>>838
何の話ですか?
840
(2): 2017/05/17(水)18:54 ID:I2NnygAn(1) AAS
windowsアプリを作製中なんですが
一部Googleのとある拡張機能を使用する必要があるので
その拡張機能をパッケージ化したものを組み込んでいるのですが
その場合開発したアプリをそのまま他者に有料で配布すると違法になったりしますか?
ライセンス上問題ありませんか?
841: KAC 2017/05/17(水)19:27 ID:gfAVX0wE(2/3) AAS
>>840
その拡張機能に書かれているライセンス次第
842: KAC 2017/05/17(水)19:32 ID:gfAVX0wE(3/3) AAS
>>838
なんか主要な言葉が端折られてるからいまいちわからんけど、
マルチスレッド化して一気に実行するってのなら、
共有するリストに排他制御付きで追加していくか
スレッドごとにリスト作って完了後に合成するとか
普通に対応すれば問題ないと思う

とりあえず、何が問題になると考えてるのか書いてみたら?
843: 2017/05/17(水)20:09 ID:bdvqA1ry(2/2) AAS
>>840
そんなの誰も気づかないだろ
844
(2): 2017/05/18(木)06:46 ID:kl7Ly5JN(1/2) AAS
メイドさんが表紙になってるコンピュータ系の雑誌か書籍ってありますか?
どっかで見た記憶があるのですが思い出せません
845
(1): 2017/05/18(木)07:23 ID:M2K9zSA7(1) AAS
>>844
いくらでもあるような。。。
846
(1): 2017/05/18(木)12:19 ID:xXCtzo0J(1) AAS
>>844
CPU の創りかた?
847
(1): 2017/05/18(木)15:10 ID:sweIXqck(1) AAS
キチガイ多すぎ
848: 2017/05/18(木)16:03 ID:Pt9OawB6(1) AAS
>>847
自分がそうだからといって
他人もそうだと決めつけるのはよくない
849: 2017/05/18(木)18:42 ID:kl7Ly5JN(2/2) AAS
>>845
Amazonでざっくり探してみてますが
コンピュータ系だと会社で読む人に配慮してるのか意外固い表紙の本が多いです
>>846
もっとポップなデザインだったと記憶しています

コンピュータ関連の書籍の近くで見たのでグラフィックデザイン系の可能性もあります
引き続き探してみます
お騒がせしました
850: 2017/05/18(木)18:59 ID:hKe3x/Mw(1) AAS
画像リンク[jpg]:image.itmedia.co.jp
人工知能?

そういやPC買ってからはPC雑誌って買ったこと無いな
851
(7): 2017/05/19(金)08:09 ID:Jchfh+8+(1/2) AAS
メモリ上にあるデータを計算して複数のビットマップを生成、これらを乗算合成やコントラストの調整をした後に表示
これらの計算をほぼリアルタイムに行う必要があります。スクロールバーなどのUIから表示する場所を指示されたら
上記処理を実行し該当部分を表示する感じです
データは多いと500MBを越える可能性があり、これらを事前に計算しビットマップ化することはメモリの使用量的に
現実的ではありません。数GB程度では収まらないと予想されます
このようなWindowsアプリケーションの開発環境にC++ or C# or Javaあたりを考えていますがどれが向いていますかね?
やはり開発の手間は掛かっても安定した性能を得やすいC++?C#やJavaでも何とかなる?後者の場合はGCも
ちゃんと制御しないとゴミがたまってえらいことになりそうな気もします
普段はRubyを使っています。上記3つはどれもあまり使用経験がなく、特にC#やJavaは未経験といって差し支えない状態です
また他に良さそうな開発環境があれば紹介してもらえると嬉しく思います

よろしくお願いします
852
(1): 2017/05/19(金)08:13 ID:1s7BLiGf(1/2) AAS
>>851
言語よりもどれだけ最適化できるかによると思う
Ruby+ライブラリで作ってみて、無理と感じたら別言語に移植と言った感じでいいんじゃないか
853: 2017/05/19(金)08:17 ID:8fy8h9zZ(1/2) AAS
>>851
C++/CLIやJNIで計算部分をCで書いてGUI部分をC#やJavaで書くというのが現実的かな
854: 2017/05/19(金)08:17 ID:K2XF16mV(1) AAS
>>851
ビットマップだからメモリ喰うんだろ。
pngでやれよ。
855: 2017/05/19(金)08:18 ID:8fy8h9zZ(2/2) AAS
いや待てメモリ上に置いておくのにPNGはないだろ、処理ごとに一々エンコードデコード繰り返すのか?
856: 2017/05/19(金)08:23 ID:1s7BLiGf(2/2) AAS
メモリが足りてるならビットマップでいいだろう
pngにすると超めんどくさいぞ
857: 2017/05/19(金)18:04 ID:h716kJIh(1) AAS
>>851
Visual C++
858: 2017/05/19(金)20:34 ID:iLAnMNZa(1/2) AAS
linux mint18 32bit
python3をF5で実行できるエディターは無いでしょうか?
Geany 1.27ではpython2.7なので、python3.5を使用したいと思ってます

PC自体にはpytho3.5と2.7が入ってます
859
(1): 2017/05/19(金)20:38 ID:58Qpkunv(1) AAS
実行命令持っててキーバインドいじれるエディタならどれでも
少なくともvimならちょっとしたスクリプト書けばできる
860: 2017/05/19(金)21:17 ID:iLAnMNZa(2/2) AAS
>>859
ありがとうございます

設定を変更できる事を知りませんでした。
変更したら、python3が使える様になりました。
861
(1): 2017/05/19(金)21:33 ID:ZIGu+dYQ(1) AAS
>>851
uiがそれほど複雑なものを要求されないなら、openframeworksとかどうよ
862
(1): 851 2017/05/19(金)22:29 ID:Jchfh+8+(2/2) AAS
レスありがとうございます

少なくともでかいデータを扱う部分はがんばって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を叩くって出てきましたし
863: 2017/05/19(金)23:59 ID:UNasSbUs(1) AAS
全部cでゴリゴリ書くという電波が
864: 2017/05/20(土)00:24 ID:DVLho5Qf(1) AAS
UWPは選択肢にあがらないのかね
触ったことないから知らないけど
865: 2017/05/20(土)01:52 ID:mBBESjva(1) AAS
問題解けなくて、目標とやる気を失いました
何か楽しいことないですか?
866: 2017/05/20(土)02:08 ID:oftSHlNU(1) AAS
彼女を作ってください
867: 2017/05/20(土)02:37 ID:xPYo2hCY(1/2) AAS
楽しいこと?減量するんだ
868: 2017/05/20(土)03:17 ID:WmFfeyqJ(1/3) AAS
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
869: 2017/05/20(土)03:40 ID:WmFfeyqJ(2/3) AAS
他には、Linuxで、ffmpeg で変換するとか

ffmpegのフロントエンドの、VidCutter とか
870: 2017/05/20(土)05:40 ID:WmFfeyqJ(3/3) AAS
画像変換は、Linuxで、ImageMagick だったな
871: 2017/05/20(土)08:39 ID:Ykf9CvnE(1/2) AAS
>>862
VS入れればC#もC++も入るっしょ。
そのままC#で全部書いても良いと思うけどね。
C#は起動というか、dll読み込みに時間かかるだけで、一回読み込めばPC再起動するまでC++と遜色無い速度出るよ。
起動も速くってなるとC++とMFCとか、で作った方が良いけどかなり作りにくい。
C#でUIポトペタで作った方が楽。
872: 2017/05/20(土)10:16 ID:wFoQdJsm(1) AAS
>C++と遜色無い速度出るよ
これJITを使った処理系で良くいわれるけど
多量のデータをゴリゴリ計算する用途でコンパイラー系言語の代わりに使われている例ってほとんどなくね?
Javaもそうだけどほとんどの場合は開発の省力化を目的として使われているような
873
(2): 2017/05/20(土)11:04 ID:Ykf9CvnE(2/2) AAS
そりゃ大量のデータ扱うようなのは使わなくなったメモリこまめに解放せにゃならんから、GCな言語には荷が重いけどね。
PCにメモリたくさん積んでればその分C++じゃないと行けない分野は遠ざかる。
試しに作って見て、駄目ならC++に作り直してC#から呼んでも良い。
874: 片山博文MZ ◆T6xkBnTXz7B0 2017/05/20(土)19:52 ID:3NdrFBG3(1) AAS
世の中には迷惑メールを自動で送信するだけでがっぽり儲けてる会社があるらしい。
875
(2): 2017/05/20(土)21:02 ID:WA6qSQf1(1/2) AAS
>>873
C/C++でもメモリが断片化するから、メモリをこまめに解放してないっての知ってる?
876: 2017/05/20(土)22:32 ID:TX7Bd0Me(1) AAS
GCの詳細仕様は言語にもツールによるし、かなりめんどくさいから自分の得意言語でいくのが一番いいと思う
877
(1): 2017/05/20(土)22:47 ID:xPYo2hCY(2/2) AAS
>>875
言語側が断片化抑制のために即解放しない、などではなくて
プログラマがどうメモリ管理するかの話だよな?
878
(3): 2017/05/20(土)23:42 ID:WA6qSQf1(2/2) AAS
>>877
同じだろ?

GCもってない言語で delete object とする代わりに
GC持ってる言語は object = NULL すればいいんだから

deleteしたってすぐメモリが開放されるわけじゃない
879
(1): 2017/05/20(土)23:51 ID:UWBN1LZO(1) AAS
>>878
んな事あるか
880: 2017/05/21(日)00:38 ID:KYYeGok8(1/10) AAS
GCの実装者にとってはどういう挙動をするかが
重要なところなんだろうけど、

GCの利用者=大部分のプログラマにとっては
スコープがなくなった時に自動的にdelete object相当が
適切に実行されるってのが重要

それによってメモリがすぐに解放されるか、
一定時間後に解放されるかは重要ではない
881: 2017/05/21(日)00:53 ID:lI2AjJAk(1) AAS
つまり>>878は、Cでmallocしたものをfreeしてもすぐ開放されないって言いたいのか
882: ◆QZaw55cn4c 2017/05/21(日)03:28 ID:pUWFtSb1(1/7) AAS
>>879
>>878 は「処理系はfreeしたメモリを即座にOSに返したりはしない」ということをいいたいだけだとみた
それならばわかる
883: 2017/05/21(日)05:32 ID:9HtUCvpi(1/7) AAS
しかし>>873のGC関係の発言にレスつける形なので意味がわからん
884
(3): 2017/05/21(日)05:47 ID:YZtqITyu(1/4) AAS
確かメモリクリーナーってアプリはメモリ圧迫してOSのメモリ断片化解消機能を意図的に呼び出すアプリなんだけど、そう言う意味じゃ大量にメモリ喰う時点で断片化はOSが解消してくれんじゃね?
885
(2): 2017/05/21(日)05:52 ID:VISjd5sh(1/2) AAS
定数と変数について質問です。
例えば街づくりゲームがあったとして、空港を作ろうというときに、
滑走路の最小長と最大長の中から、ユーザに長さを決めてもらおうというとき、
最小長と最大長は定数で、ユーザが決める長さは変数がいいのかなと思いますが、
例えば最大長が3000mとして、ある時システムアップデートで、5000mまで作れるようになりましたというとき、
最大長を変える必要がありますが、定数は不変であるはずなのに変えないといけません。
となると、システムが指定する最小長や最大長なんかも、変数であるべきなのでしょうか?
886
(1): 2017/05/21(日)05:55 ID:YZtqITyu(2/4) AAS
システムとして動いてる時に変更されちゃ困るから定数。
定数だからって、プログラム書き換えちゃいけない訳じゃ無い。
887
(1): 2017/05/21(日)05:58 ID:YZtqITyu(3/4) AAS
多分、消費税増税された時とか定数書き換えただけで増税対応版として売ってぼろ儲けしてる。
(そこしか変更してる訳じゃ無いと信じたいがw)
888
(1): 2017/05/21(日)06:12 ID:9HtUCvpi(2/7) AAS
>>885
何を定数とすべきかは開発作業上の視点で考えてもらうとして、別の観点で
アップデートで一部データだけの差し替えで済むように、exe自身の差し替えをしないで済むように、
ということで変更されうる設定はデータファイルから取ってきて設定用変数にぶちこむ扱いのほうが
889: 2017/05/21(日)06:41 ID:DM2pkhyK(1/3) AAS
>>887
それは普通のこと。それはまだいい
5%と8%が混在したらマジでヤバかった。全く想定外だからシステム思いっきり作り直すことになるところだったわ
890: 2017/05/21(日)06:45 ID:YZtqITyu(4/4) AAS
そのための定数だわな。
891
(1): ◆QZaw55cn4c 2017/05/21(日)09:12 ID:pUWFtSb1(2/7) AAS
>>884
断片化の解消はOSでは無理,メモリークリーナーはがぜ
892: 2017/05/21(日)09:41 ID:DM2pkhyK(2/3) AAS
メモリクリーナーってガセだったのか?
あれを使うと間違いなく軽くなったけど
893
(1): 2017/05/21(日)09:52 ID:fDsf7qWs(1/4) AAS
>>891
大きなメモリを確保する事で、物理メモリ上のデータをスワップファイルに吐き出させます。その後、確保したメモリを開放します。これを行った後は物理メモリに空きが出来るので、一時的にメモリ確保などの動作がスムーズに動きます。
外部リンク[php]:www.atmarkit.co.jp
894: 2017/05/21(日)10:03 ID:DM2pkhyK(3/3) AAS
そんな力技だったのかw
てっきりGCをアプリやOSの代わりに強制的に行うソフトだと思っていたわ
895: 2017/05/21(日)10:08 ID:fDsf7qWs(2/4) AAS
OSに保護されてる別アプリのメモリをどうやって解放しろと。
それが出来たらウィルス作り放題だわ。
896: 2017/05/21(日)10:15 ID:01kZhcWn(1) AAS
スマップなら解散したよね
897
(1): 885 2017/05/21(日)11:15 ID:VISjd5sh(2/2) AAS
>>886-
ありがとうございます。
変えちゃいけないというわけではにと聞き疑問が解決しました。
定数変数の感性を引き続き鍛えることにします。
898: 2017/05/21(日)12:05 ID:fDsf7qWs(3/4) AAS
>>897
多分普通のアプリなら>>888のやり方のが良いけど、ゲームだったらユーザーが勝手に設定書き換えてチート行為出来ない様にセーブデータとかはバイナリファイルにした方がいい。
フルスクリーンかウィンドウかみたいなゲームそのものの設定は設定ファイルで良いと思うけど。
899
(4): 2017/05/21(日)12:09 ID:KYYeGok8(2/10) AAS
>>884
> 確かメモリクリーナーってアプリはメモリ圧迫してOSのメモリ断片化解消機能を意図的に呼び出すアプリなんだけど、そう言う意味じゃ大量にメモリ喰う時点で断片化はOSが解消してくれんじゃね?

ディスクと同じで断片化を解消するにはメモリ内のデータを移動しなきゃいけないが、
ポインタ(メモリ座標の生の値)を使う言語ではデータの移動はできない。
参照を使う言語であれば、可能かもしれないが(ただしOSの仕事ではない)

またディスクは断片化していても、遅くなるだけでファイルを作成することはできるが
メモリの場合は、断片化によってうまれて小さな空き領域に
大きなデータを作ることはできない。

何度もメモリの確保と解放を繰り返す処理を行うと、使えない小さな空き領域が
たくさん作られていくことになる。
900: 2017/05/21(日)12:19 ID:fDsf7qWs(4/4) AAS
>>899
>>893
まあなんだ。
断片化して来たら意図的にメモリ大量確保でスワップファイルに吐き出させて再配置させりゃあ良いってわけだな。
901: ◆QZaw55cn4c 2017/05/21(日)12:43 ID:pUWFtSb1(3/7) AAS
でもユーザー空間での断片化はどうしようもないだろう?
ユーザーメモリ空間が有限である以上,断片化を解消する手段はないとおもうよ,32bit 空間ならば断片化でアウトとなる可能性は十分にあるのでは?
902: 2017/05/21(日)13:18 ID:2TTm6ATP(1/3) AAS
んなのOSがスワップファイルから書き戻す時にどう再配置するかだな。
アプリのアドレスを順に詰めてくのに中身のアドレスも詰めていかない理由もないんだが。。。
こればっかりはな。
そうでなけりゃ自前で再配置するかってーとそんなバッドノウハウの本に出会った事ない。
大量にメモリ喰うアプリがある以上、そう言う本があってもおかしくないんだが。
903
(3): 2017/05/21(日)13:19 ID:9HtUCvpi(3/7) AAS
>>899
これは俺の頭が腐ってるのか

・OSがOS上で動作するプログラムに提供するメモリと、本当に物理的な物理メモリと、それぞれの中身は必ずしも同一でない、
 だからswapなんてものが存在・機能しうるし、だから上で語られている「メモリクリーナー」は一応機能しうる、と思うのだが
・その言語を使ってプログラマが書くコードについてではなく、実際の動作について、ポインタ使わない言語ってあるのか
904
(1): 2017/05/21(日)13:29 ID:2TTm6ATP(2/3) AAS
>>903
大丈夫。腐ってない。
>>899がシッタカ押し通そうとして自爆しただけだ。
905
(1): 2017/05/21(日)13:35 ID:KYYeGok8(3/10) AAS
>>904
自爆してるのはお前だばーかw

俺はメモリクリーナーの話をしていない
>>903はポインタを間違えただけだろうが
それに気づかないお前ばマヌケだば〜かw
906
(1): 2017/05/21(日)13:38 ID:KYYeGok8(4/10) AAS
>>903
> これは俺の頭が腐ってるのか
そうそうお前の頭が腐ってる

物理的な配置の話は関係ない。
物理的な配置が変わった所で論理的な配置は同一だ。
それはスワップした所で変わらない

論理的な配置が断片化しているのを
物理的な配置を変えた所で何も改善できない。
907
(1): 2017/05/21(日)13:40 ID:2TTm6ATP(3/3) AAS
>>905
はあ。。。
あのな?
メモリークリーナーで再配置して動作が一時的とは言え改善するんだろ?
アプリのガワだけ再配置しても中身が断片化してたら遅いままだわな?
おk?
908
(1): 2017/05/21(日)15:00 ID:KYYeGok8(5/10) AAS
>>907
> メモリークリーナーで再配置して動作が一時的とは言え改善するんだろ?

それは再配置したから改善したのではない。
単に「使用頻度の低いメモリを今すぐスワップファイルに押し出す」を実行しただけだ

「メモリをディスクに追い出しています。しばらくお待ちください。」と
今(実行したタイミング)で時間をかければ
後から(足りなくなった時点)で追い出す時間がなくなるってだけの話。

ディスクに追い出す処理を、今やるか後でやるかの違い。

それがメモリクリーナーの仕組み

そして本当に使用頻度の低いメモリであれば効果はあるだろうが
実際のメモリクリーナーは使用頻度を見ていない。
メモリクリーナー以外のプロセスのメモリを追い出しているだけ。

必要なメモリも追い出すから「必要なメモリをディスクから読み取ってます」が
後から発生するので意味が無いと言われてる。
909
(2): 2017/05/21(日)15:07 ID:9HtUCvpi(4/7) AAS
>>906
875,878,880と来てたからOS管理の物理メモリ領域を考えてるのかと思っていた
それで>>884はOS管理のメモリ全体の話として「メモリクリーナー」出したんだろうと認識していた
しかしそうすると>>899がわけわからなかったので903を書いたところ、
906はプロセスが見てる仮想アドレスのほうだけ考えろという

しかしそうすると>>875がわからん
現実にOSには返却されなくてもmalloc/free叩いてるプロセスから見たらしっかり解放されてんじゃね?と思うのだが
さらにいえば、それはつまりプログラマ側が考えてメモリ確保/解放しろよという話であり、
(851のケースだと処理をある程度細切れにしたうえで、繰り返し動的に使うメモリ領域のサイズを固定にするとか)
GCのある言語とないcのような言語とを比べる文脈で意味のある内容でもない
という気がするんだが

あとポインタ使わない言語の件もさっぱりわからん
910
(2): 2017/05/21(日)15:19 ID:hH55+ewD(1/8) AAS
>>908
語るに落ちたな。

>そして本当に使用頻度の低いメモリであれば効果はあるだろうが
>実際のメモリクリーナーは使用頻度を見ていない。
>メモリクリーナー以外のプロセスのメモリを追い出しているだけ。

>必要なメモリも追い出すから「必要なメモリをディスクから読み取ってます」が
>後から発生するので意味が無いと言われてる。

その通りだ。
使用頻度無視というか、メモリークリーナーが最大使用頻度になる事で他の使用中のアプリまでスワップファイルに追い出すんだよ。
だから、おまいの言う動作が改善してるのはまだ使用頻度低いメモリが書き戻されてないからじゃあない。
全部スワップファイルに行ってるんだからな。
むしろ、お前さんの言ってる書き戻す最中はまだ書き戻ってないHDD上のスワップファイルにアクセスする頻度が多いからクソ遅い。
(使ったことあるなら経験あるだろ?)

全部書き戻ってから快適動作するけど、また時間が経てば断片化する。
一時的って言ってもそれなりに持続性はあるんよ。
911: 2017/05/21(日)15:27 ID:hH55+ewD(2/8) AAS
>>909
おいらも分からん。
それじゃGC無い言語がゲームに向いてる説明にもならん。
仮にfreeして直ぐじゃなかったとしても、OSが解放おk出した時点で解放されるのに対してGCな言語は「まだだ!!まだ行ける」って離さない場合があるとかぐらいかね〜?

まあ、断片化防ぐのにfreeを遅らせるとかは間違っちゃ。。。ん?
メモリ確保した時点で断片化進んでるじゃんよ。
解放しても同じ場所が開くだけだからタイミング関係ねーわ。
912
(2): 2017/05/21(日)15:27 ID:9HtUCvpi(5/7) AAS
>>910
横からすまんけど
>また時間が経てば断片化する。
この「断片化」ってOS管轄側のメモリであって、プロセスから見えてる仮想アドレス領域じゃないよな
じゃないと筋が通らないし
で、このOS側のメモリ断片化が、実際の(体感)性能にどんくらい影響与えるのか確認したURLとかもし知ってたら教えてくれんか
913
(1): 2017/05/21(日)15:32 ID:KYYeGok8(6/10) AAS
>>910

> 語るに落ちたな。



> その通りだ。

笑うところ?
あってるじゃんwww
914: 2017/05/21(日)15:34 ID:hH55+ewD(3/8) AAS
結論としては構造体の中身の配置に気を付けて、隙間のある構造体を避ける。
リストより配列をなるべく利用して連続したメモリ確保を意識して、解放した時マダラ模様ができないように気を使う。
プログラマー側がメモリの断片化に対して出来ることってこのくらいじゃね?
915
(1): ◆QZaw55cn4c 2017/05/21(日)15:34 ID:pUWFtSb1(4/7) AAS
>>909
物理アドレスの断片化はOS/CPU のページングで解消できるが,論理アドレスの断片化はどうしようもない
たしかに,プログラマ側からfreeされた領域を,うまくやりくりして断片化を少なくするのは,ライブラリのmalloc/freeの書きようによるが,
今,すでに断片化してしまった論理アドレス空間を連続化するのは,すでに断片化させてしまった以上ライブラリでは対処できそうにないし,OS側でも当然できない

ポインタを使わない言語でのGC装備は断片化に対抗できるが,万能ではない,そもそもGCは余分な仕事をしているわけだし,私にはマーク&スウィープと比べて劇的によくなるアルゴリズムがあるとは思えない(これは主観)
GCする他に変数の再配置もやるのか?なんだかメモリ管理だけでビジネスロジックを圧迫しそうな勢いじゃないか‥
916: 2017/05/21(日)15:35 ID:hH55+ewD(4/8) AAS
>>913
抜粋したトコだけな。
917
(1): 2017/05/21(日)15:40 ID:KYYeGok8(7/10) AAS
>>912
hH55+ewDが言ってるのがOS管轄側のメモリ。

俺はそのOS管轄側のメモリ=物理メモリが断片化するという話はしてない。
物理メモリはいくら断片化しようが何の影響も与えない。

俺が話してるのはプロセスから見えてる仮想アドレス領域
malloc/freeを繰り返すと、その仮想アドレス領域は断片化する。

ただし断片化するから遅くなるという話はしていない。
断片化するから小さい空きメモリができまくるという話をしてる

その小さい空きメモリは、OSからドカンと割り当ててもらった
ある程度のサイズのメモリ領域に埋もれているので、
そのメモリはfreeしてもOSに返されることはない。
ドカンと割り当ててもらったサイズ単位で管理されているから。

mallocしするたびに数十バイトとちまちまとメモリをOSから
もらってるわけじゃないということを分かってないのだろう
918
(1): 2017/05/21(日)15:46 ID:KYYeGok8(8/10) AAS
>>915

> ポインタを使わない言語でのGC装備は断片化に対抗できるが,万能ではない,
> そもそもGCは余分な仕事をしているわけだし,私にはマーク&スウィープと比べて劇的によくなるアルゴリズムがあるとは思えない(これは主観)
> GCする他に変数の再配置もやるのか?なんだかメモリ管理だけでビジネスロジックを圧迫しそうな勢いじゃないか‥

君には基本的なソフトウェアの進化っていうのを教えてあげよう

「人間が楽をするために、コンピュータに仕事を押し付ける」だ

コンピュータの仕事が増える? それこそがソフトウェアの正常な進化なんだが
919
(1): 2017/05/21(日)15:47 ID:hH55+ewD(5/8) AAS
>>912
んとな。
両方だよ。
OSはOSで複数のアプリをメモリに配置する。
確かページ単位とか言うので複数アプリの使用頻度高い所だけ置いてる。
どっちかつーとOSのは断片化し難い。
してもスワップファイルに追い出すだけだし。
勿体無いスペース出来て多目にスワップファイルに書き込まれるくらい?
アプリがスワップファイルにアクセスする頻度上がって遅くなるだけ。

んで、アプリはアプリでメモリの確保と解放繰り返してたら断片化する。
大量にメモリ使って新しく置く隙間がなくなって、酷い場合はそれ以上確保できなくなる。
異常終了する。
普通そこまでメモリ使わないから意識することないだろうけど。
メモリリークはこのメモリ確保出来なくなって異常終了ってパターン。
920
(3): 2017/05/21(日)15:49 ID:9HtUCvpi(6/7) AAS
mallocが現実にどんなコードになってるかとか各種GC実装の中身とか
全然知らない俺が書いてるのはおこがましいかもしれないが

>>917
>物理メモリはいくら断片化しようが何の影響も与えない
これ詳しく頼む
それと、一番大事なとこで、>>851のような
大きいデータを読んで大きいデータを生成しては破棄する処理を繰り返し行う場合、
GCのある言語を使うか、GCない言語を使うか、ってところはどう考えてるかスパッと聞きたい
921: ◆QZaw55cn4c 2017/05/21(日)15:50 ID:pUWFtSb1(5/7) AAS
>>918
せいぜい first-fit-strategy を best-fit-strategy にするくらいでイイ線いってるとおもってる
GC の威力は感じているよ,メソッドチェーンな書きようは C++ では考えられない
でも,論理アドレスの断片化は,メモリ空間の拡大で解消するのがベスト,言語系でどうこうするのはどうかな?って感想なんだ‥
922
(1): 2017/05/21(日)15:55 ID:KYYeGok8(9/10) AAS
>>920
物理メモリはいくら断片化しようが
CPU(ハードウェア)が備えるメモリ再配置機能によって
常に断片化してないように見せることが可能だから
ハードウェアが備える強力な特殊能力よw
923
(1): ◆QZaw55cn4c 2017/05/21(日)15:58 ID:pUWFtSb1(6/7) AAS
>>920
物理メモリの断片化はCPUの機能であるページングで解消できるよ
でもね,スラッシングを起こすようでは,そもそもそれは物理メモリが足りないんだと思うよ,メモリクリーナーは理屈は分かるがネーミング自体がうそ臭いね‥

大きなデータを使うこととGCとは相関はないと思うよ,GCは余分なことをしている,という感覚は大事だね
C/C++ で延命できる気は最近はしなくなってしまった,すっごくシビアなことをしているのでもないかぎりC/C++にこだわるのはどうかな?

なんにつけ,とにもかくにも,障害の解消には物理メモリを増やすのが一番手っ取り早いと思うね‥
924: 2017/05/21(日)16:07 ID:hH55+ewD(6/8) AAS
>>920
単に大きいファイル扱うならバッファ用意(メモリ確保)して、ファイルからバッファ分だけ読んで処理して書き出す。をファイルの中身全部読むまで繰り返す。
全部書き出したらメモリ解放。

C/C++でのメモリ確保と解放はゲームみたいに「このタイミングで止まると困る」ってのじゃ無ければ気にすることはない。
925: 2017/05/21(日)16:08 ID:hH55+ewD(7/8) AAS
気にすることはないってのは別にGCな言語でも良いってことね。
926: ◆QZaw55cn4c 2017/05/21(日)16:10 ID:pUWFtSb1(7/7) AAS
ま,そういうことだろうね
927: 2017/05/21(日)16:12 ID:KYYeGok8(10/10) AAS
なお、GCがなくてもメモリがスワップアウトすれば止まります
928
(1): 2017/05/21(日)16:28 ID:9HtUCvpi(7/7) AAS
>>922-923
すまん混乱してきた
まずもってCPU(MMUというかTLBというか?)が物理/仮想のメモリアドレス変換を高速にやってるのは知らんかった
しかし、するとこれはハード的な物理メモリと、OSが見てる物理メモリ(ハードからは仮想)と、OS上の各種プログラムが見てるメモリ(OSからは仮想)と、
3層構造になってるという認識で良いのか?(正しくは知覚してないだけだろうけど、ある意味GC言語だと4層)

んでもう一つ、OS<->OS上のプログラム間ではやはり断片化は問題になったりしないのか?
プロセスごとに空間作って提供してるんだし、swapファイル/領域持ってたりするんだから、OS側も対応表持ってるよねこれ
そうなるとOSが見てるメモリについても断片化すると影響皆無とはならない気がするんだけども

GC有無と大量データ処理は関係なくねとか
ハード成長してんだからプログラマがガリッガリに管理しない方向のほうが良くねとか、については理解できる
個人的にはどうしてもそっちで考えちゃうが
929: 2017/05/21(日)16:52 ID:hH55+ewD(8/8) AAS
>>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層じゃなくて仮想メモリの解放を自動化してるだけ。
独自にアドレス持ってる訳じゃない。
930
(2): 2017/05/22(月)15:11 ID:I0Kgi1YL(1) AAS
このご時勢でWindowsアプリでメモリ断片化なんて本当に問題になるのか。
組み込みじゃあるまいし理解できん。これを理由にGC推しも理解できん。
性能最優先で最善を尽くしたいならc/c++一択、開発効率優先ならC#でもJAVAでも好きにしろ、で終わる話だろ。
931: 2017/05/22(月)16:09 ID:3W7nNBo7(1) AAS
速度を出すならアセンブリだ!
932: ◆QZaw55cn4c 2017/05/22(月)20:05 ID:Zgh5eQVH(1) AAS
>>930
GC 推しなのは,メモリが逼迫する状況ではどっちでも手の打ち様がなく一緒だから
933: 2017/05/22(月)21:37 ID:6t8os15O(1/4) AAS
>>930
934: 2017/05/22(月)21:38 ID:6t8os15O(2/4) AAS
GC推しする理由は、開発効率以外にないと思うけど?
935: 2017/05/22(月)21:59 ID:g3oHLvAy(1) AAS
開発効率って言っても両方使えるなら対して変わらんけどな
936: 2017/05/22(月)22:11 ID:6t8os15O(3/4) AAS
GCない言語で今使われてるのって
C/C++ぐらいでしょ?

GCの有無とは関係なく、言語とそのライブラリで
開発効率が随分と違うんだが
937: 2017/05/22(月)22:13 ID:6t8os15O(4/4) AAS
GCの有無とは関係なくじゃなくて
GCの有無以前にと言うべきか

GCの有無でも開発効率は変わるが、
C/C++はそれ以前に言語レベルで開発効率が悪いわけで
対して変わらないという答えになるはずがない
938: 2017/05/22(月)22:30 ID:O7KSblrp(1) AAS
CやC++にはboehm-gcがあるがそれで開発効率が良くなるかは疑問だ
939
(2): 2017/05/22(月)22:36 ID:FIg1n5Bp(1) AAS
性能もC/C++とJava等で大して変わらないという答えになるはずがないな
940
(1): 2017/05/23(火)01:32 ID:VKoAE6j/(1) AAS
swift「わいもgcなんぞたよらんでぇ」
941: 2017/05/23(火)02:02 ID:OrYmr6qc(1) AAS
>>940
それな。

GCは備えていないがswiftみたいに明示的に解放する
必要はない言語はなんて言えば良いんだろう
942: ◆5HCMEYYr5o 2017/05/23(火)12:28 ID:F0rvxaiH(1/3) AAS
>>939
あくまで、論理アドレス断片化等のメモリ管理上の話だったかと
943
(1): 2017/05/23(火)13:00 ID:3W0XlzKr(1/3) AAS
>>939
気づいたら、C# が C++ の速度を凌駕している!
外部リンク:espresso3389.hatenablog.com

「C# が C++ の速度を凌駕している」らしいので、C++側を高速化してみた
外部リンク:qiita.com

書き方次第ではある。
944: 2017/05/23(火)13:06 ID:3W0XlzKr(2/3) AAS
まあJavaはポインタ無いから、でかいクラスを参照渡し出来ないからC#より高速化の手段少ないんだけどね。
確か引数内でnewするとかの裏技的なことで参照渡してた記事を読んだ気はする。
945: 2017/05/23(火)13:08 ID:BC+HAMVa(1) AAS
javascriptがC++より60%早くなった
を思い出した

>>943
byteキャスト部分が無かったら…
946: 2017/05/23(火)13:14 ID:3W0XlzKr(3/3) AAS
C++どころかCよりも速いC#の記事を昔読んだんで、探してるんだけど見つからんかった。
もうちょい探すけど、最終的にはCがまた逆転してた。
何つーかGCの有無ってより、高速化の手段の有る無しやね。
947: 2017/05/23(火)14:12 ID:Y6ikkNJp(1/2) AAS
速度と言語は関係なし。実装しだい。
Cコンパイラどうしでも差がある。
948: 2017/05/23(火)14:15 ID:IWbgSxPp(1/2) AAS
まあ、プログラムの速さを気にするやつの99%はヘボいコードしか書けないと言う調査結果が有るよね。
949: 2017/05/23(火)14:36 ID:ufwaINxg(1) AAS
プログラムの速さを気にしない奴の99.9%はヘボいコードしか書けないけどな
950: 2017/05/23(火)15:13 ID:IWbgSxPp(2/2) AAS
まあ、この二つの命題から言える事は99.9%以上のプログラマはヘボいコードしか書けない
951
(1): 2017/05/23(火)15:57 ID:Y6ikkNJp(2/2) AAS
C#はネイティブ化してなかったか LLVM使用で
それだとDOTNETとまだ別の速度だろ
952: 2017/05/23(火)16:08 ID:UVgxThtR(1) AAS
俺は残り0.1%にかけるぜ
953: 2017/05/23(火)18:04 ID:7NMuNQp8(1) AAS
書けると賭けるに掛けたのか
954: 2017/05/23(火)18:06 ID:i5pqu4AL(1) AAS
つまり謙虚さが大事ってことだな
955: ◆QZaw55cn4c 2017/05/23(火)18:15 ID:F0rvxaiH(2/3) AAS
>>951
いつも思うんだが、VM のメリットとして当時は何を想定していたの?
956: 2017/05/23(火)18:53 ID:PJIONmxy(1) AAS
横からだが、昔はVBとVC++で別々のライブラリだった。
ライブラリと言うか、VBはVC++で作られたコンポーネント利用するだけだった。

.netはVB、C#、F#、VC++/CLIだっけ?でライブラリを共通に使える。
.net Frameworkのもだし、それぞれの言語で自作したライブラリも。

今はストアにうpしたらストアで各プラットフォーム用にILをコンパイルしてネイティヴにするか、する予定。
もう完成したか追ってないけど、実験的に動かしてたのまでは追ってた。

理屈の上ではJavaのVMでも出来そうだけど、プラットフォームの違いを吸収するのが大変で現実的じゃ無い。
MSは自社プラットフォームに限定する事で現実的な選択をした。
957
(2): 2017/05/23(火)19:30 ID:Y2XmHkKh(1) AAS
参照とポインタってどう違うんでしょうか?
参照もポインタもオブジェクトを指すのは同じではないでしょうか?
勉強してる内に目が回ってきてしまいました・・
958: 2017/05/23(火)19:36 ID:wXnS6T2N(1) AAS
>>957
ポインタは計算で変えられる
959: ◆QZaw55cn4c 2017/05/23(火)19:41 ID:F0rvxaiH(3/3) AAS
>>957
ポインタを抽象化したのが参照、ということでお茶を濁しておいていいんじゃないでしょうか…
C++ ではポインタの参照とかできるので、いろいろ記述してみるといいかと
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.356s*