Windows 7 为什么这个程序在processing.exe中运行得这么慢?

Windows 7 为什么这个程序在processing.exe中运行得这么慢?,windows-7,processing,Windows 7,Processing,为什么这个程序在processing.exe中运行得这么慢 在配备Intel graphics的3GHz Windows 7计算机上,下面的程序在processing.exe中仅显示约1fps,但在Chrome的sketchpad中显示全速 int金额=30; 整数[]x=新整数[金额]; 整数[]y=新整数[金额]; int[]z=新的int[金额]; 无效设置(){ 尺寸(500、400、P3D); 背景(0); noFill(); 中风(255); 冲程重量(1); 对于(int i=0;

为什么这个程序在processing.exe中运行得这么慢

在配备Intel graphics的3GHz Windows 7计算机上,下面的程序在processing.exe中仅显示约1fps,但在Chrome的sketchpad中显示全速

int金额=30;
整数[]x=新整数[金额];
整数[]y=新整数[金额];
int[]z=新的int[金额];
无效设置(){
尺寸(500、400、P3D);
背景(0);
noFill();
中风(255);
冲程重量(1);

对于(int i=0;i您的程序正在以60 fps的速度运行。您可以在调用
background()
后立即添加此项来确认这一点:

文本(帧率,25,25);
这将显示每帧的当前帧速率,您将看到它不断更新

您的问题是这一行:

rotateY(sin(帧数/100)*1);
请注意,
frameCount
100
都是
int
值。它们没有小数位,任何涉及它们的操作都会删除小数位。因此:

0/100=0
25/100 = 0
99/100 = 0
100/100 = 1
125/100 = 1
因此,
frameCount/100
的值只会每
100
帧更改一次。因此,从
sin()
函数返回的值只会每
100
帧更改一次。这就是为什么看起来只有1fps

您可以通过在该行之前添加一点打印语句来确认这一点:

println(“frameCount/100=“+(frameCount/100));
println(“sin:+sin(帧数/100));
解决这个问题的方法是使用一个
float
值。这些值有一个小数部分,任何涉及它们的操作都有一个小数部分。要做到这一点,只需在
100
中添加一个小数部分,使其成为
100.0
。处理过程将知道您希望它成为
float
值,现在就可以得到结果也将是浮动的

0/100.0=0.0
25/100.0 = 0.25
99/100.0 = 0.99
100/100.0 = 1.0
125/100.0 = 1.25
因此,您只需将该行更改为:

rotateY(sin(frameCount/100.0));

您的程序正在以60 fps的速度运行。您可以在调用
background()
后立即添加此项来确认这一点:

文本(帧率,25,25);
这将显示每帧的当前帧速率,您将看到它不断更新

您的问题是这一行:

rotateY(sin(帧数/100)*1);
请注意,
frameCount
100
都是
int
值。它们没有小数位,任何涉及它们的操作都会删除小数位。因此:

0/100=0
25/100 = 0
99/100 = 0
100/100 = 1
125/100 = 1
因此,
frameCount/100
的值只会每
100
帧更改一次。因此,从
sin()
函数返回的值只会每
100
帧更改一次。这就是为什么看起来只有1fps

您可以通过在该行之前添加一点打印语句来确认这一点:

println(“frameCount/100=“+(frameCount/100));
println(“sin:+sin(帧数/100));
解决这个问题的方法是使用一个
float
值。这些值有一个小数部分,任何涉及它们的操作都有一个小数部分。要做到这一点,只需在
100
中添加一个小数部分,使其成为
100.0
。处理过程将知道您希望它成为
float
值,现在就可以得到结果也将是浮动的:

0/100.0=0.0
25/100.0 = 0.25
99/100.0 = 0.99
100/100.0 = 1.0
125/100.0 = 1.25
因此,您只需将该行更改为:

rotateY(sin(frameCount/100.0));