teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

訂正

2018/05/19 06:24

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -2,8 +2,16 @@
2
2
 
3
3
  その制約の下で効率よく動くようにプログラミングするのが常道です。
4
4
 
5
- もし使っている計算機に何テラ・何ペタものメモリーと超高速なプロセッサーを搭載しているなら40万行のコードもなんなく実行できるかも知れません。しかし例えば8GBしか主記憶が搭載されてない計算機で実行しようとすると、1行あたりのJavaのバイトコードが仮に20バイトぐらいメモリーを消費するとすれば40万行で8GBにも達します。単なるバイトコードだけでそれだけになるとJavaのオブジェクトを格納しておくべきヒープやらProcessing以外にOS配下で動いているもろもろのプログラムが「スムーズに動けなくなる」ことは想像に難くありません。
5
+ もし使っている計算機に何テラ・何ペタものメモリーと超高速なプロセッサーを搭載しているなら40万行のコードもなんなく実行できるかも知れません。~~しかし例えば8GBしか主記憶が搭載されてない計算機で実行しようとすると、1行あたりのJavaのバイトコードが仮に20バイトぐらいメモリーを消費するとすれば40万行で8GBにも達します。単なるバイトコードだけでそれだけになるとJavaのオブジェクトを格納しておくべきヒープやらProcessing以外にOS配下で動いているもろもろのプログラムが「スムーズに動けなくなる」ことは想像に難くありません。~~
6
6
 
7
7
  > こんなことする意味があるのかは置いといて
8
8
 
9
- それはかまわないのですが、40万行はナンセンスな分量と言えましょう。少なくともコードの中に直接定数を並べて同じような処理を並べるのは止めましょう。こういうものは可変の部分を計算によって求めたり、外部のファイルへ置くなどして「プログラムコード自体は小さく」書くのが普通です。
9
+ それはかまわないのですが、40万行はナンセンスな分量と言えましょう。少なくともコードの中に直接定数を並べて同じような処理を並べるのは止めましょう。こういうものは可変の部分を計算によって求めたり、外部のファイルへ置くなどして「プログラムコード自体は小さく」書くのが普通です。
10
+
11
+ ---
12
+ 訂正:
13
+ 40万行のバイトコードの試算を間違えて8GBと計算してしまったため、ちょっと変なところに着目して回答してしまいました。失礼しました。
14
+
15
+ プロセッシングがフリーズ(?)した直接原因は不明ですが、少なくともJVMの仕様制限にひっかかるぐらいメソッドが大きすぎるのは確実と思います。1万行ぐらいでやってみましたが、Javacでコンパイルするとコンパイル時に「コードが大きすぎます」というコンパイルエラーになりますね。
16
+
17
+ しかしながら、「何万行ものコードを書くのはよくない」という点は同じでそれが回答の要点であると受け取ってください。

1

誤記

2018/05/19 06:24

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -1,4 +1,4 @@
1
- 計算機のパワーには限界があります。それはスピードだったり、メモリーやハードディスクの容量などハードウェア的な制約であったり、OSなどのソフトウェア的な制約(同時に開くことができるファイルの数は1000でとか・・・)であったりします。
1
+ 計算機のパワーには限界があります。それはスピードだったり、メモリーやハードディスクの容量などハードウェア的な制約であったり、OSなどのソフトウェア的な制約(同時に開くことができるファイルの数は1000個までとか・・・)であったりします。
2
2
 
3
3
  その制約の下で効率よく動くようにプログラミングするのが常道です。
4
4