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

回答編集履歴

3

訂正

2018/04/21 09:22

投稿

KSwordOfHaste
KSwordOfHaste

スコア18406

answer CHANGED
@@ -1,3 +1,12 @@
1
+ 訂正:
2
+ 回答コメントのやりとりからProcessingの動作モデルの把握云々の問題ではなくProcessing自体の問題であるように思えました(確証があるわけではないのですが自分の環境でも3.3.6では問題なく、3.3.7で再現したからです)
3
+
4
+ 回答コメントにも書きましたが、3.3.7の利用を止めて3.3.6を試すことをお奨めしてみます。
5
+
6
+ なおProcessingは(少なくともデフォルトでは)PCにインストールされているJREではなくProcessing自身に同梱されたJREを使うようになっていますので、PCにインストールされているJavaバージョンには左右されないと思います。
7
+
8
+ 以下は元の回答
9
+ ---
1
10
  コードがないので推測でコメントします。
2
11
 
3
12
  質問者さんはProcessingの基本動作、すなわち「setupは最初だけ起動される」「drawはごく短い期間中に何度も呼び出される」という点をよく把握しておられないのではないでしょうか?

2

綴り間違いを訂正

2018/04/21 09:22

投稿

KSwordOfHaste
KSwordOfHaste

スコア18406

answer CHANGED
@@ -31,7 +31,7 @@
31
31
 
32
32
  ---
33
33
  追記:もう少し具体例を挙げてみます。300個ぐらいの円を描画する以下のコードを自分の環境(Windows 10 64bit)実行してみるとだいたい20%ぐらいのCPU使用率でした。
34
- drawEllipsysをsetupで呼び出すように変えると見た目はかわらず、CPU使用率はほぼ0%になりました。
34
+ drawEllipsesをsetupで呼び出すように変えると見た目はかわらず、CPU使用率はほぼ0%になりました。
35
35
 
36
36
  どの程度の描画でどのくらいの負荷がかかるかの実例として参考になればと思います。
37
37
 
@@ -55,10 +55,10 @@
55
55
  }
56
56
 
57
57
  void draw() {
58
- drawEllipsys();
58
+ drawEllipses();
59
59
  }
60
60
 
61
- void drawEllipsys() {
61
+ void drawEllipses() {
62
62
  fill(0);
63
63
  noStroke();
64
64
  rect(0,0,width,height);
@@ -68,4 +68,6 @@
68
68
  ellipse(xs[i], ys[i], rs[i], rs[i]);
69
69
  }
70
70
  }
71
- ```
71
+ ```
72
+ 追記:最初つづりを間違ってdrawEllipsysとしてました。drawEllipsesに訂正しました。
73
+ お恥ずかしい限りです。orz

1

追記

2018/04/21 08:24

投稿

KSwordOfHaste
KSwordOfHaste

スコア18406

answer CHANGED
@@ -27,4 +27,45 @@
27
27
  void draw() {
28
28
  // 特に何もしない
29
29
  }
30
+ ```
31
+
32
+ ---
33
+ 追記:もう少し具体例を挙げてみます。300個ぐらいの円を描画する以下のコードを自分の環境(Windows 10 64bit)実行してみるとだいたい20%ぐらいのCPU使用率でした。
34
+ drawEllipsysをsetupで呼び出すように変えると見た目はかわらず、CPU使用率はほぼ0%になりました。
35
+
36
+ どの程度の描画でどのくらいの負荷がかかるかの実例として参考になればと思います。
37
+
38
+ ```
39
+ int N = 300;
40
+ float[] xs = new float[N];
41
+ float[] ys = new float[N];
42
+ float[] rs = new float[N];
43
+ color[] fills = new color[N];
44
+ color[] strokes = new color[N];
45
+
46
+ void setup() {
47
+ size(500,500);
48
+ for (int i = 0; i < N; i++) {
49
+ xs[i] = random(width);
50
+ ys[i] = random(height);
51
+ rs[i] = 10 + random(10);
52
+ fills[i] = color(random(256), random(256), random(256));
53
+ strokes[i] = color(random(256), random(256), random(256));
54
+ }
55
+ }
56
+
57
+ void draw() {
58
+ drawEllipsys();
59
+ }
60
+
61
+ void drawEllipsys() {
62
+ fill(0);
63
+ noStroke();
64
+ rect(0,0,width,height);
65
+ for (int i = 0; i < N; i++) {
66
+ fill(fills[i]);
67
+ stroke(strokes[i]);
68
+ ellipse(xs[i], ys[i], rs[i], rs[i]);
69
+ }
70
+ }
30
71
  ```