C some Speed !!

Most programmers know that c programs are the next best thing to assembly language programs in terms of Speed , and here is yet another example .

When solving one of the problems at projecteuler.net.I Suddenly came upon the idea to compare the speed of execution of the same algorithm in different languages.

So here is the program in Three Programming languages , C , Java and Python

First in C

#include<stdio.h>
long long  LargestPrimeFactor(long long number) {
		long long n = number , i , Largestfactor = 1;
		for (i = 2; i <= (n / i); i++) {
			while (n % i == 0) {
				Largestfactor = i > Largestfactor? i : Largestfactor;
				n /= i;
			}
		}
		Largestfactor = n > Largestfactor ? n : Largestfactor;

		return Largestfactor;
	}
int main (){
	printf(" %d \n",LargestPrimeFactor(600851475143));
}

Then in Java

class ex3{
	public static long LargestPrimeFactor(long number) {
		long n = number, factor = 1 , i;
		for (i = 2; i <= n / i; i++) {
			while (n % i == 0) {
				factor = i>factor?i:factor;
				n /= i;
			}
		}
		factor = n>factor?n:factor;
		return factor;
	}
	public static void main(String [] args){
		System.out.println(LargestPrimeFactor(600851475143L));
	}
}

and now in Python

def LargestPrimeFactor(num):
        n=num
        factor = 1
        i=2
        while( i<= (n/i) ):
                while( n%i == 0 ):
                        if i>factor :
                                factor = i
                        n /= i
                i += 1
        if n > factor:
                factor = n
        return factor

print LargestPrimeFactor(600851475143)

I computed the times using the time utility in linux .

I expected the c program to win there was no doubt about that , and java was expected to come in second with python last .

$ time ./a.out
 6857

real	0m0.003s
user	0m0.004s
sys	0m0.000s

$ time java ex3
6857

real	0m0.114s
user	0m0.084s
sys	0m0.028s
$ time python ex3.py
6857

real	0m0.035s
user	0m0.028s
sys	0m0.004s

From the results its quite visible that c had won over python and python had won over java ,even though java was supposed to be faster than python.

The reason for python winning is that the cost of starting up the JVM is quite high, when compared with the cost of starting the python interpreter.

So lesson learnt If your program is short run it in python when given a choice , but still C is the king of Speed

Ps: This Question on stackoveflow goes over some more details .

Advertisements

Scalaxia for Android

Scalaxia for android was just released by Jug-C Member Ragunath Jawahar who is also the Founder and  CTO of Mobs and Geeks

Scalaxia is a project by Java User Group Chennai , It aggregates tweets related to the Scala Language , It is built using the Scala language itself and it runs on Google App Engine

Here are a few screenshots

 

And here is a video of it in action

 

The App can be Downloaded from here


Serving Servlets !

When staring web developement now a days many people  start with PHP , Ruby on Rails , or something like that , but there was a Time when Servlets were King .

Servlets are still very Prominent and are also very powerful, and sometimes better than any other web development platform.

To get started with servlets using just Tomcat is very easy , but using Eclipse along with it Required a small bit of effort .

I spent 20 minutes on learning how to configure Eclipse to work with Tomcat 7

So here is a Tutorial for the same .

So Lets get Started…..

The Downloads

2 Things have to be downloaded

  1.  Eclipse IDE for Java EE Developers
  2. Apache Tomcat 7

The Process

I am writing this tutorial for Linux but the concept is the same for Windows and Mac .

After Downloading

Extract Eclipse and tomcat into a folder

After Extracting Eclipse ,

Run Eclipse

open Window->Preferences 

Choose Server->Runtime Environments

Click Add 

Choose Apache Tomcat v7.0

Click Next

Choose the location where Tomcat was extracted 

Click Finish

Now the Server has been successfully added .

The Project

Create a new Dynamic Web Project

After Creating the project

Right click on the project  select New->Servlet

Now you can create your Servlet and run it in eclipse with Tomcat ,  so what are you waiting for  get coding!!


FLEX ible Builder !

I recently attended a 2 Symposiums at some colleges whose name I don’t want to mention, I was a participant in Web Designing Competition in both . In the first one , I really did not plan , I just made a mash up with jQuery , but in the Second one, I put some effort into planning and I designed a really cool website with jQuery UI , I deserved  at least a 2nd  prize , but my tough luck would have it , I didn’t win anything !

I noticed then winners of both the competitions were students who created something very basic with Flash , My creating was comparatively complex and had more features , but Students who did Flash got real preference.

I set out to Solve this , I Applied to the program that adobe was offering Flex Builder 4 for free to students ,and I got a reply with a free serial Key .

AdobeEmail

Then I set out to Learn Flash under flex SDK 4.1.

This was a bit more difficult than I Thought , but I Finally managed to Understand MxML and Action Script .

Armed with this Knowledge I made a Simple Calculator (http://j.mp/ewBMmM )

UseLessCalc1

Being a guy who Likes Open Source stuff , I have made the source code available for free.

Just Right Click  –> View Source

Calc3

In view source mode you get to see the source code and also to download a Zip version .

A nice Feature that is easily built with Flex Builder .

image

I was surprised to Learn How simple Action Script really is .

Action Script ,JavaScript ,Java , C++ … all these languages are like cousins , You Know one , the other is really similar .

MxML on the other hand is pure XML , but its very easy with Autocomplete Enabled.

So the First Step of My Flash Learning Process is officially complete.

Now I can officially add this to my Resume` .