Tuesday, January 06, 2009

Jython Speed vs Java

I have created a small benchmark , to test the speed of Jython when calling swing components and JAVA2D methods. I was aiming to 5x times slower speed in JYTHON but JYTHON proved me very wrong. IT was only 3 times slower than JAVA.

The benchmark was not only for speed reasons but also a way to learn Jython .

I share with you the code of both JAVA and Jython. You may run the test in your computer and share results.

The app is building a window and draws 1 point lines and then displays a very large button with the amount of nanoseconds it took to execute the program.

I run the test in a ACER ASPIRE ONE with 1.GHz Pentium Atom Processor, 500 MB RAM, 8 GB SDD HD and WINXP.


------------------------------------------------------------------------------------
JAVA CODE
------------------------------------------------------------------------------------




/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package speed;

import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.color.*;
import java.awt.geom.Line2D;
import java.awt.*;
import java.util.Observable;
import javax.swing.JComponent;
import java.util.Observer;

public class Central {



public static void main(String[] args) {
//Toolkit theKit = aWindow.getToolkit();
//Dimension wndSize = theKit.getScreenSize();
long StartTime = System.nanoTime();
JFrame aWindow = new JFrame("This is my window");
CentralView view;
view = new CentralView();

aWindow.getContentPane().add(view, BorderLayout.CENTER);

aWindow.setBounds(0, 0, 800, 500);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aWindow.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
aWindow.getContentPane().setBackground(Color.PINK);
aWindow.setVisible(true);
long EndTime = System.nanoTime();
long TimeExec = EndTime - StartTime;

aWindow.getContentPane().add(new JButton("Time of Excution in nano seconds:" + TimeExec));


}
}

class CentralView extends JComponent implements Observer {

/**
*
*/

private static final long serialVersionUID = 1L;

public void paint(Graphics g) {
Graphics2D g2D = (Graphics2D) g;

for (double x = 0; x < 801; x++) {
for (double y = 0; y < 501; y++) {
Line2D.Double l1 = new Line2D.Double(x, y, x, y);
g2D.setPaint(Color.BLUE);
g2D.draw(l1);
}
}

g2D.setPaint(Color.RED);
g2D.draw3DRect(50, 50, 100, 100, true);

g2D.drawString("A Speed Test ", 60, 100);


}

@Override
public void update(Observable arg0, Object arg1) {
// TODO Auto-generated method stub
}
}






-------------------------------------------------------------------------------------
JYTHON CODE
------------------------------------------------------------------------------------






# This line will import the appropriate swing library for your system (jdk 1.1 or 1.2)
from java import awt
from java import lang
from java import util
from javax import swing

class CentralView(swing.JComponent, util.Observer):
def paint(self, g):
for x in range(0, 800):
for y in range(0, 500):
l1 = awt.geom.Line2D.Double(x, y, x, y)
g.draw(l1)

g.setPaint(awt.Color.RED)
g.draw3DRect(50, 50, 100, 100, 1)
g.drawString("a nice square", 60, 100)

StartTime = lang.System.nanoTime()
view = CentralView()


aWindow = swing.JFrame('This is my window ')
aWindow.getContentPane().add(view, awt.BorderLayout.CENTER)
aWindow.setBounds(0, 0, 800, 500)
aWindow.setDefaultCloseOperation(swing.JFrame.EXIT_ON_CLOSE)
aWindow.setCursor(awt.Cursor.getPredefinedCursor(awt.Cursor.CROSSHAIR_CURSOR))
aWindow.getContentPane().add(view)
aWindow.setVisible(1)
EndTime = lang.System.nanoTime()
TimeExec = EndTime - StartTime
aWindow.getContentPane().add(swing.JButton("Time of Execution in nano seconds:" + str(TimeExec)))


Wednesday, December 31, 2008

A Christmas Song

I wanted to make a Christmas Song about a Child looking at the window early in the morning and watching the snow fall slowly. 

It is a way for me to wish Merry Christmas and a Happy new year to you and your family. Don't forget to smile , cause life is beautiful even at its worst.   

The song is called "First Christmas Snow" and it is made solely on a YAMAHA MOTIF ES6. You can listen to it with the player on the right. 

Wednesday, December 24, 2008

XSI-> TheShark -> Unfinished

In case you are wondering what happened to my reptilious shark , it was left ufinished of course. But it turned out well. The reason I did not finished is because i tried to sculpt scales on its body resembling a crocodile but it was a bit difficult. It required a high detail mesh and my computer did not allow it (only 2 GHz at the time and a low spec graphic card) and that was my excuse for quiting.

But I managed to sculpt properly the model , so I share it with you now , some people may find it worth their time.

This is the model , sculpted in Zbrush and rendered in XSI














and this is the wireframe













Click the photos for a larger view.

Blofeld Editor VST with JAVA

I have already started making a blofeld editor using the VST framerwork from JAVA with the help of the jVSTwRapper . The editor will probably implement the basic functionality of Waldorf Blofeld synth and will exclude any sysex related features like the arpeggiator and utility parameters which can be unstable in some hosts. Building a very good looking GUI is the purpose as well. But for now a non GUI version is the highest priority which will control alla CC controllable parameters of the Waldorf Blofeld synthesiszer.

I have already made a first version which can control the cutoff of the first filter but I experience problems with making midi pass thru the editor. As soon as I solve this problem , then the non gui editor will be just a matter of time ;)

Watch this space for all updates.

Saturday, February 18, 2006

XSI->The Shark->Step Two




As I promised i finished the general shape and added fins and tail. Here is the render region of the right side.

XSI -> The Shark -> Step One

I have finished the general shape of the shark and added the fins. I will try to add some pictures tomorrow.

Genesis

This is the first post. I will post here my progress with XSI and other hobies...