Re: Java vs C++ speed (IO & Sorting)
Man stop writing code like this. You dont know c++. Do this: create a
website called javavscpp.com. Put a heading on the home page "A
challenge to all c++ devs/compilers in the world". Write a description
of the task to be achieved, for example as you have written in the
original post about the text sorting in bible.txt. Write your own java
code there, mention if you prefer what jvm should be used. Leave the
cpp part to the cpp devs. Now announce the prize. Tell people you
would never program in java again if anyone posts a code that is
faster than the java code on the same hardware/os specs. Well I think
no one would give a shit if you never use java again, so i think this
wont work. Announce a $5000 prize for any one who would do the same
task in c++ faster than java. Do that.
..ab
On Mar 20, 11:10 am, Razii <fdgl...@hotmails.com> wrote:
This topic was on these newsgroups 7 years ago :)
http://groups.google.com/group/comp.lang.c++/msg/695ebf877e25b287
I said then: "How about reading the whole Bible, sorting by lines, and
writing the sorted book to a file?"
Who remember that from 7 years ago, one of the longest thread on this
newsgroup :)
The text file used for the bible is hereftp://ftp.cs.princeton.edu/pub/cs1=
26/markov/textfiles/bible.txt
Back to see if anything has changed
(downloaded whatever is latest version from sun.java.com)
Time for reading, sorting, writing: 359 ms (Java)
Time for reading, sorting, writing: 375 ms (Java)
Time for reading, sorting, writing: 375 ms (Java)
Visual C++ express and command I used was cl IOSort.cpp /O2
Time for reading, sorting, writing: 375 ms (c++)
Time for reading, sorting, writing: 390 ms (c++)
Time for reading, sorting, writing: 359 ms (c++)
The question still is (7 years later), where is great speed advantage
you guys were claiming for c++?
------------------- Java Code -------------- (same as 7 years ago :)
import java.io.*;
import java.util.*;
public class IOSort
{
public static void main(String[] arg) throws Exception
{
ArrayList ar = new ArrayList(5000);
String line = "";
BufferedReader in = new BufferedReader(
new FileReader("bible.txt"));
PrintWriter out = new PrintWriter(new Buffere=
dWriter(
new FileWriter("output.txt")));
long start = System.currentTimeMillis();
while (true)
{
line = in.readLine();
if (line == null)
break;
if (line.length() == 0)
continue;
ar.add(line);
}
Collections.sort(ar);
int size = ar.size();
for (int i = 0; i < size; i++)
{
out.println(ar.get(i));
}
out.close();
long end = System.currentTimeMillis();
System.out.println("Time for reading, sorting, writ=
ing: "+
(end - start) + " ms");
}
}
--------- C++ Code ---------------
#include <fstream>
#include<iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <ctime>
using namespace ::std;
int main()
{
vector<string> buf;
string linBuf;
ifstream inFile("bible.txt");
clock_t start=clock();
buf.reserve(50000);
while(getline(inFile,linBuf)) buf.insert(buf.end(), linBuf);
sort(buf.begin(), buf.end());
ofstream outFile("output.txt");
copy(buf.begin(),buf.end(),ostream_iterator<string>(outFile,"\n"));=
clock_t endt=clock();
cout <<"Time for reading, sorting, writing: " << endt-start << "
ms\n";
return 0;
}