BigRoyNL

02-17-2011, 09:35 PM

Hey Guys,

I've been wanting to check out speed differences between nodes to speed up my autorigger just every tiny bit extra. But I just couldn't seem to find out which exactly of these two nodes was the fastest and came up with the following way to test it.

Testing the multDoubleLinear node speed:

// testing multDoubleLinear

file -f -new;

shadingNode -asUtility multDoubleLinear;

setAttr "multDoubleLinear1.input1" 1;

setAttr "multDoubleLinear1.input2" 1;

for ($x = 2; $x < 10000; $x++) {

shadingNode -asUtility multDoubleLinear;

connectAttr -f ("multDoubleLinear"+($x-1)+".output") ("multDoubleLinear"+$x+".input1");

setAttr ("multDoubleLinear"+$x+".input2") 2;

select -r ("multDoubleLinear"+$x);

}

{

int $amountOfRepetitions = 20;

int $amountOfFrames = 10000;

float $timings[];

float $total = 0;

for ($x = 0; $x<$amountOfRepetitions ; $x++) {

timer -s;

for ($i = 0 ; $i<$amountOfFrames ; $i++) {

if (`getAttr "multDoubleLinear1.input1"` == 2) {

setAttr "multDoubleLinear1.input1" 2;

}

else {

setAttr "multDoubleLinear1.input1" 1;

}

}

$timer = `timer -e`;

print ($timer+"\n");

$total = $total + $timer;

}

print ("Total time: "+$total+"\nAverage Time: "+($total/$amountOfRepetitions)+"\nFPS: "+(($amountOfRepetitions*$amountOfFrames)/$total)+"\n");

}

Testing the multiplyDivide node speed:

// testing multiplyDivide speed

file -f -new;

shadingNode -asUtility multiplyDivide;

setAttr " multiplyDivide1.input1X" 1;

setAttr " multiplyDivide1.input2X" 1;

for ($x = 2; $x < 10000; $x++) {

shadingNode -asUtility multiplyDivide;

connectAttr -f (" multiplyDivide"+($x-1)+".outputX") (" multiplyDivide"+$x+".input1X");

setAttr ("multiplyDivide"+$x+".input2X") 2;

select -r (" multiplyDivide"+$x);

}

{

int $amountOfRepetitions = 20;

int $amountOfFrames = 10000;

float $timings[];

float $total = 0;

for ($x = 0; $x<$amountOfRepetitions ; $x++) {

timer -s;

for ($i = 0 ; $i<$amountOfFrames ; $i++) {

if (`getAttr " multiplyDivide1.input1X"` == 2) {

setAttr " multiplyDivide1.input1X" 2;

}

else {

setAttr " multiplyDivide1.input1X" 3;

}

}

$timer = `timer -e`;

print ($timer+"\n");

$total = $total + $timer;

}

print ("Total time: "+$total+"\nAverage Time: "+($total/$amountOfRepetitions)+"\nFPS: "+(($amountOfRepetitions*$amountOfFrames)/$total)+"\n");

}

Giving me the results (on both 10.000 nodes and 10.000 calculations on these connected nodes)

The total time is the result of these calculations above done 20 times. The average is for what I said above.

multDoubleLinear

Total time: 7.472

Average Time: 0.3736

FPS: 26766.59529

multiplyDivide

Total time: 10.125

Average Time: 0.50625

FPS: 19753.08642

Oh yeah, the speed difference thus is 0,0000000013 second if you'd just use one for one calculation. :)

So. After I did this. I concluded that the multDoubleLinear would in the end be faster (not noticeably really, but interesting result.)

But I was wondering if it's indeed right to look at these results, if not: What am I doing wrong? And how can I found out which nodes would be faster for my rig and or for what I'm trying to achieve. How can I test this.

Hope somebody knows about this. :)

Thanks in advance.

Bye,

Roy Nieterau

I've been wanting to check out speed differences between nodes to speed up my autorigger just every tiny bit extra. But I just couldn't seem to find out which exactly of these two nodes was the fastest and came up with the following way to test it.

Testing the multDoubleLinear node speed:

// testing multDoubleLinear

file -f -new;

shadingNode -asUtility multDoubleLinear;

setAttr "multDoubleLinear1.input1" 1;

setAttr "multDoubleLinear1.input2" 1;

for ($x = 2; $x < 10000; $x++) {

shadingNode -asUtility multDoubleLinear;

connectAttr -f ("multDoubleLinear"+($x-1)+".output") ("multDoubleLinear"+$x+".input1");

setAttr ("multDoubleLinear"+$x+".input2") 2;

select -r ("multDoubleLinear"+$x);

}

{

int $amountOfRepetitions = 20;

int $amountOfFrames = 10000;

float $timings[];

float $total = 0;

for ($x = 0; $x<$amountOfRepetitions ; $x++) {

timer -s;

for ($i = 0 ; $i<$amountOfFrames ; $i++) {

if (`getAttr "multDoubleLinear1.input1"` == 2) {

setAttr "multDoubleLinear1.input1" 2;

}

else {

setAttr "multDoubleLinear1.input1" 1;

}

}

$timer = `timer -e`;

print ($timer+"\n");

$total = $total + $timer;

}

print ("Total time: "+$total+"\nAverage Time: "+($total/$amountOfRepetitions)+"\nFPS: "+(($amountOfRepetitions*$amountOfFrames)/$total)+"\n");

}

Testing the multiplyDivide node speed:

// testing multiplyDivide speed

file -f -new;

shadingNode -asUtility multiplyDivide;

setAttr " multiplyDivide1.input1X" 1;

setAttr " multiplyDivide1.input2X" 1;

for ($x = 2; $x < 10000; $x++) {

shadingNode -asUtility multiplyDivide;

connectAttr -f (" multiplyDivide"+($x-1)+".outputX") (" multiplyDivide"+$x+".input1X");

setAttr ("multiplyDivide"+$x+".input2X") 2;

select -r (" multiplyDivide"+$x);

}

{

int $amountOfRepetitions = 20;

int $amountOfFrames = 10000;

float $timings[];

float $total = 0;

for ($x = 0; $x<$amountOfRepetitions ; $x++) {

timer -s;

for ($i = 0 ; $i<$amountOfFrames ; $i++) {

if (`getAttr " multiplyDivide1.input1X"` == 2) {

setAttr " multiplyDivide1.input1X" 2;

}

else {

setAttr " multiplyDivide1.input1X" 3;

}

}

$timer = `timer -e`;

print ($timer+"\n");

$total = $total + $timer;

}

print ("Total time: "+$total+"\nAverage Time: "+($total/$amountOfRepetitions)+"\nFPS: "+(($amountOfRepetitions*$amountOfFrames)/$total)+"\n");

}

Giving me the results (on both 10.000 nodes and 10.000 calculations on these connected nodes)

The total time is the result of these calculations above done 20 times. The average is for what I said above.

multDoubleLinear

Total time: 7.472

Average Time: 0.3736

FPS: 26766.59529

multiplyDivide

Total time: 10.125

Average Time: 0.50625

FPS: 19753.08642

Oh yeah, the speed difference thus is 0,0000000013 second if you'd just use one for one calculation. :)

So. After I did this. I concluded that the multDoubleLinear would in the end be faster (not noticeably really, but interesting result.)

But I was wondering if it's indeed right to look at these results, if not: What am I doing wrong? And how can I found out which nodes would be faster for my rig and or for what I'm trying to achieve. How can I test this.

Hope somebody knows about this. :)

Thanks in advance.

Bye,

Roy Nieterau