From: John M. <joh...@ya...> - 2001-03-08 17:58:57
|
Any thoughts about developing a tool to convert Jython to Java? Unlike jythonc (which is a great tool!), something to ease the job of porting to Java in order to get better performance. I'm porting code by hand now. It's pretty mechanical. And the performance gain is dramatic. If only it wasn't sooo tedious. BTW, after spending hours adding braces and semicolons and "new" and *obvious* data types, etc. to transform Jython to Java, I now think of Java as simply Jython dressed in drag. (Not that there's anything wrong with that!) __________________________________________________ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ |
From: <bc...@wo...> - 2001-03-08 22:27:48
|
[John Mudd] >Any thoughts about developing a tool to convert Jython to Java? Unlike >jythonc (which is a great tool!), something to ease the job of porting >to Java in order to get better performance. > >I'm porting code by hand now. It's pretty mechanical. Yes, but not entirely. >And the performance gain is dramatic. Yes. >If only it wasn't sooo tedious. Yes. Keep in mind that since you wrote the original python version, you are familiar with the exact type of all the variables in the application. Creating a tool that can figure out this information from a data flow analysis is not that easy. JimH though it was possible and his original jpythonc2 was intended to such a type analysis tool. However, it is not a tool I can create. >BTW, after spending hours adding braces and semicolons and "new" and >*obvious* data types, etc. to transform Jython to Java, I now think of >Java as simply Jython dressed in drag. (Not that there's anything >wrong with that!) Probably because you only use a small subset of python's dynamics. Think about converting an application that changes the __class__ field, add or replace methods on class, use multiple inheritance or build codestrings to be exec'ed. regards, finn |
From: John M. <joh...@ya...> - 2001-03-09 00:35:13
|
Yes, I not only used vanilla Jython but also used Java classlibs for I/O and checksums instead of Python. I originally used Python but started using Java where I could to help performance. That wasn't enough and so then I started switching completely to Java. Maybe there's a market for this sort of scenario. Use a subset of Jython in exchange for the ability to switch to Java after the prototype solidifies. Maybe both languages would benfit from collaboration. --- Multiple inheritance? Yes, it's upsetting to me that the Java techs left this out and have the nerve to defend their gutless decision with bs. In reality, Java does support multiple inheritance. Well, in one necessary case where the Java techs painted themselves into a corner... the ability to inherit from Thread and one other class. They don't support this explicitly... no, that would require admitting their error. Instead they hatcked the language itself to get that it. Ugh. That's makes two mistakes. --- CPython? I'm not sure about that anymore. It's faster than Jython in most cases but I have multi-threaded apps... on HP. Maybe I misused it but CPython crumbles... each thread taking a turn with the interpretter. The performance falls to near zero. Correct me if I'm wrong but the micro-threads in stackless Python is no better. --- Finn Bock <bc...@wo...> wrote: > > >BTW, after spending hours adding braces and semicolons and "new" and > >*obvious* data types, etc. to transform Jython to Java, I now think > of > >Java as simply Jython dressed in drag. (Not that there's anything > >wrong with that!) > > Probably because you only use a small subset of python's dynamics. > Think > about converting an application that changes the __class__ field, add > or > replace methods on class, use multiple inheritance or build > codestrings > to be exec'ed. > > regards, > finn > > _______________________________________________ > Jython-users mailing list > Jyt...@li... > http://lists.sourceforge.net/lists/listinfo/jython-users __________________________________________________ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ |
From: D-Man <ds...@ri...> - 2001-03-09 02:47:36
|
On Thu, Mar 08, 2001 at 09:59:58AM -0800, John Mudd wrote: | Any thoughts about developing a tool to convert Jython to Java? Unlike | jythonc (which is a great tool!), something to ease the job of porting | to Java in order to get better performance. You are converting to Java for performance? I haven't heard that one before. Why not try CPython first? I have heard that CPython is ~2-3 times faster than Jython. Also, why not convert the Python code to C++ or C if you really want performance? Well-written C or C++ is lots faster than equally well-written Java. (This isn't to say that you can't make poorly written C that is slower than well written Java) -D |
From: John M. <joh...@ya...> - 2001-03-09 14:38:51
|
I tried CPython first and I was thrilled to get 2-3 times better performance. But it doesn't support multi-threading. (Unless I completely misunderstand which is possible.) My impression is that CPython threads serially take turns using the interpreter. That was a dead end for me. That plus the need to use Jython (Java) classlibs to access our CORBA orb. Plus the push in our group for Java. Convert to C or C++. My impression is that I can only expect about 50% better performance than using Java. Plus my code now has reached the limits of the hardware and so, in that respect, there is no room for further improvement. Although I agree that it would still be better to put less stress on the machine that I have to share with many other processes. A more efficient program would help in that respect but... Recode in C?? The app is tooo complicated. By design, 'C' doesn't afford implementing such deep abstraction. C++ was an early attempt to solve this fundamental problem with OOP but I consider it the 286 (the predecessor to Intel's 386 processor) of OOP languages. A necessary step but I'm proud to have never coded in it the same way I'm proud to have never owned a 286 PC. IMHO, of course. A lot of this stuff is over my head and so it's easy for me to draw incorrect conclusions. --- D-Man <ds...@ri...> wrote: > On Thu, Mar 08, 2001 at 09:59:58AM -0800, John Mudd wrote: > | Any thoughts about developing a tool to convert Jython to Java? > Unlike > | jythonc (which is a great tool!), something to ease the job of > porting > | to Java in order to get better performance. > > You are converting to Java for performance? I haven't heard that one > before. Why not try CPython first? I have heard that CPython is > ~2-3 > times faster than Jython. > > Also, why not convert the Python code to C++ or C if you really want > performance? Well-written C or C++ is lots faster than equally > well-written Java. (This isn't to say that you can't make poorly > written C that is slower than well written Java) > > -D > > > _______________________________________________ > Jython-users mailing list > Jyt...@li... > http://lists.sourceforge.net/lists/listinfo/jython-users __________________________________________________ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ |
From: Bill S. <Bill.Scherer@VerizonWireless.com> - 2001-03-09 14:50:03
|
If you have the budget for it, TowerJ can substanially improve your performance. I can provide some more details if you wish. John Mudd wrote: > > I tried CPython first and I was thrilled to get 2-3 times better > performance. But it doesn't support multi-threading. (Unless I > completely misunderstand which is possible.) My impression is that > CPython threads serially take turns using the interpreter. That was a > dead end for me. That plus the need to use Jython (Java) classlibs to > access our CORBA orb. Plus the push in our group for Java. > > Convert to C or C++. My impression is that I can only expect about 50% > better performance than using Java. Plus my code now has reached the > limits of the hardware and so, in that respect, there is no room for > further improvement. Although I agree that it would still be better to > put less stress on the machine that I have to share with many other > processes. A more efficient program would help in that respect but... > > Recode in C?? The app is tooo complicated. By design, 'C' doesn't > afford implementing such deep abstraction. > > C++ was an early attempt to solve this fundamental problem with OOP but > I consider it the 286 (the predecessor to Intel's 386 processor) of OOP > languages. A necessary step but I'm proud to have never coded in it > the same way I'm proud to have never owned a 286 PC. > > IMHO, of course. A lot of this stuff is over my head and so it's easy > for me to draw incorrect conclusions. > > --- D-Man <ds...@ri...> wrote: > > On Thu, Mar 08, 2001 at 09:59:58AM -0800, John Mudd wrote: > > | Any thoughts about developing a tool to convert Jython to Java? > > Unlike > > | jythonc (which is a great tool!), something to ease the job of > > porting > > | to Java in order to get better performance. > > > > You are converting to Java for performance? I haven't heard that one > > before. Why not try CPython first? I have heard that CPython is > > ~2-3 > > times faster than Jython. > > > > Also, why not convert the Python code to C++ or C if you really want > > performance? Well-written C or C++ is lots faster than equally > > well-written Java. (This isn't to say that you can't make poorly > > written C that is slower than well written Java) > > > > -D > > > > > > _______________________________________________ > > Jython-users mailing list > > Jyt...@li... > > http://lists.sourceforge.net/lists/listinfo/jython-users > > __________________________________________________ > Do You Yahoo!? > Get email at your own domain with Yahoo! Mail. > http://personal.mail.yahoo.com/ > > _______________________________________________ > Jython-users mailing list > Jyt...@li... > http://lists.sourceforge.net/lists/listinfo/jython-users -- William K. Scherer Sr. Member of Applications Staff - Verizon Wireless Bill.Scherer_at_VerizonWireless.com |
From: John M. <joh...@ya...> - 2001-03-09 15:01:34
|
Actually, they (I won't mention the company name) ran into a bug and will try to compile the app after they get their stuff working. I'm not thrilled about using a Jar-to-'C' compiler. One of the reason to switch to Java is to avoid past nightmarish problems with building platform specific deliverables and actually getting them properly delivered. A Jar compiler may solve a problem but, like a lot of solutions, it creates a problem in the process. And then there's the fact that their stuff did not run on the first try... --- Bill Scherer <Bill.Scherer@VerizonWireless.com> wrote: > If you have the budget for it, TowerJ can substanially improve your > performance. I can provide some more details if you wish. > > John Mudd wrote: > > > > I tried CPython first and I was thrilled to get 2-3 times better > > performance. But it doesn't support multi-threading. (Unless I > > completely misunderstand which is possible.) My impression is that > > CPython threads serially take turns using the interpreter. That > was a > > dead end for me. That plus the need to use Jython (Java) classlibs > to > > access our CORBA orb. Plus the push in our group for Java. > > > > Convert to C or C++. My impression is that I can only expect about > 50% > > better performance than using Java. Plus my code now has reached > the > > limits of the hardware and so, in that respect, there is no room > for > > further improvement. Although I agree that it would still be > better to > > put less stress on the machine that I have to share with many other > > processes. A more efficient program would help in that respect > but... > > > > Recode in C?? The app is tooo complicated. By design, 'C' doesn't > > afford implementing such deep abstraction. > > > > C++ was an early attempt to solve this fundamental problem with OOP > but > > I consider it the 286 (the predecessor to Intel's 386 processor) of > OOP > > languages. A necessary step but I'm proud to have never coded in > it > > the same way I'm proud to have never owned a 286 PC. > > > > IMHO, of course. A lot of this stuff is over my head and so it's > easy > > for me to draw incorrect conclusions. > > > > --- D-Man <ds...@ri...> wrote: > > > On Thu, Mar 08, 2001 at 09:59:58AM -0800, John Mudd wrote: > > > | Any thoughts about developing a tool to convert Jython to Java? > > > Unlike > > > | jythonc (which is a great tool!), something to ease the job of > > > porting > > > | to Java in order to get better performance. > > > > > > You are converting to Java for performance? I haven't heard that > one > > > before. Why not try CPython first? I have heard that CPython is > > > ~2-3 > > > times faster than Jython. > > > > > > Also, why not convert the Python code to C++ or C if you really > want > > > performance? Well-written C or C++ is lots faster than equally > > > well-written Java. (This isn't to say that you can't make poorly > > > written C that is slower than well written Java) > > > > > > -D > > > > > > > > > _______________________________________________ > > > Jython-users mailing list > > > Jyt...@li... > > > http://lists.sourceforge.net/lists/listinfo/jython-users > > > > __________________________________________________ > > Do You Yahoo!? > > Get email at your own domain with Yahoo! Mail. > > http://personal.mail.yahoo.com/ > > > > _______________________________________________ > > Jython-users mailing list > > Jyt...@li... > > http://lists.sourceforge.net/lists/listinfo/jython-users > > -- > William K. Scherer > Sr. Member of Applications Staff - Verizon Wireless > Bill.Scherer_at_VerizonWireless.com __________________________________________________ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/ |
From: Tim H. <tim...@ie...> - 2001-03-09 15:17:03
|
----- Original Message ----- From: "John Mudd" <joh...@ya...> > I tried CPython first and I was thrilled to get 2-3 times better > performance. But it doesn't support multi-threading. (Unless I > completely misunderstand which is possible.) My impression is that > CPython threads serially take turns using the interpreter. That's more or less right. Note that calls out to C-extenstions generally release the interpreter lock, so some multithreading is supported. How much depends on how much you spend in the interpreter versus how much time is spent calling out to extensions. At various times there have been free threading patches for the C-interpreter (by Greg Stein I believe). I don't know what the status of that patch is right now. > That was a > dead end for me. That plus the need to use Jython (Java) classlibs to > access our CORBA orb. Plus the push in our group for Java. That's a big plus for Jython. The way Jython "just works" with java libraries has always amazed me. > Convert to C or C++. My impression is that I can only expect about 50% > better performance than using Java. Plus my code now has reached the > limits of the hardware and so, in that respect, there is no room for > further improvement. Although I agree that it would still be better to > put less stress on the machine that I have to share with many other > processes. A more efficient program would help in that respect but... This might be true unless you're using Swing, which in my experience is dog slow.... [SNIP] -tim |
From: D-Man <ds...@ri...> - 2001-03-09 15:28:40
|
On Fri, Mar 09, 2001 at 06:40:38AM -0800, John Mudd wrote: | I tried CPython first and I was thrilled to get 2-3 times better | performance. But it doesn't support multi-threading. (Unless I | completely misunderstand which is possible.) My impression is that | CPython threads serially take turns using the interpreter. CPython does support multi-threading. I don't know to what extent it does time slicing, but you can use threads with it. (I haven't written a threaded python app yet) Java doesn't specify how the VM time slices. At school with a particular Sun jdk (I don't remember the version) on Solaris 8 the VM did no time slicing. The only way for a different thread to become the current one is for the current thread to share nicely (ie Thread.wait() or Thread.sleep()). | That was a dead end for me. That plus the need to use Jython (Java) | classlibs to access our CORBA orb. Plus the push in our group for | Java. You need to use a particular Java library. Ok that's a good reason to use Java instead of a different language. Does that orb have bindings for other languages? If it has C or C++ bindings it might not be too difficult to create a Python wrapper using SWIG. Just a thought. Since you wrote this in Python to start with I'll assume you like python and are convinced of its merits. It would probably be advantageous for you to determine why your group is pushing for Java. If it is because of simpler coding, portability, etc, then maybe you could present Python as an alternative. If you can manage to get Python bindings for your CORBA orb that would help as well. (BTW, ORBit has Python bindings, it's the free open source orb that GNOME uses) | Convert to C or C++. My impression is that I can only expect about 50% | better performance than using Java. Plus my code now has reached the In my experiences Java has been quite slow for involved applications. For example, JBuilder InstallAnywhere and NetBeans. All use Java + Swing. At times the GUI is quite unresponsive. On a Win2k box, PIII ~400 MHz, 128MB RAM it takes a while for JBuilder to redraw the screen if it has been minimized for a while. On the other hand, if Java's higher level of coding allows the developer's to create the app faster and more correctly IMO the performance hit is not a big deal. (Otherwise I would use machine code and not python ;-)) Someone else replied to me similarly saying the C/C++ doesn't give a large performance improvement, but "java implementations will continue to get better". Sun has been touting this excuse for poor implementations for years. Of course it is getting better (we hope ;-)), but so is everything else. Besides, unless the VM's do some real intelligent runtime optimizations it can't be as fast as C. It is implemented in C. Every Java instruction takes several C instructions to execute. IMO Java was released WAY before it was mature enough, and then got marketed like a silver bullet. | limits of the hardware and so, in that respect, there is no room for | further improvement. Although I agree that it would still be better to | put less stress on the machine that I have to share with many other | processes. A more efficient program would help in that respect but... Hmm, if you're at the hardware's limits I don't think there is much you can do except try and reduce the resource requirements of the program. | Recode in C?? The app is tooo complicated. By design, 'C' doesn't | afford implementing such deep abstraction. I don't know about that. Sure, it might (will) not be as easy as Python, but the GTK+ developers use C to create a highly OO and polymorphic toolkit. | C++ was an early attempt to solve this fundamental problem with OOP but | I consider it the 286 (the predecessor to Intel's 386 processor) of OOP | languages. A necessary step but I'm proud to have never coded in it | the same way I'm proud to have never owned a 286 PC. I think this is a fairly accurate statement. From my understanding C++ was originally created with 2 main design goals : speed (in OO) and compatibility with the large amount of existing C code. OO languages like Smalltalk and Modula were around, but didn't have the performance of C. I don't know very much about the 286's architecture other than it is very different from the 386. One of the reasons Linux needs at least a 386 to run. I do know a bit about the x86 architecture (pre-Pentium at least) and how it compares to the M68K architecture. If you want to read a good article comparing several languages and their performance vs. code size, check IEEE Computer magazine from a few months ago. It compared C, C++, Java, Python, Perl, Tcl, and Rexx. The conclusion is basically this: well-written C and C++ is faster than anything else. It also takes less memory. HOWEVER it is still possible (even easy IMO) to write poor quality C/C++ that has terrible performance, memory leaks, etc. The speed difference between traditional compiled languages and newer interpreted langauges is not an issue except when it is (for example your case where experimentation shows a performance boost is necessary). The article did _not_ compare the design of the language and the readability of the code. It did give measurements of LOC for each language and LOC/hour of the developers. Those numbers are, of course, approximate and can vary greatly depending on developer skill and motivation. The other replier said: """Sure you could use CPython but who wants to write c extensions when you can whip them out in java!!""" I don't find Java to be particularly cool, but I do find Jython's seamless integration of Python and Java to be very cool. I've never written a C extension to Python so I don't know how painful it may be, but writting Java extensions to Jython seems to be extremely easy. The key to remember is that performance is the least significant factor when choosing a language. Language design and its ease of use are far more important. In John's case, however, he has determined that his current implementation doesn't meet the performance criteria that he has and must rework it. That's fine since he took the proper perspective on saving performance considerations for last. -D |
From: John M. <joh...@ya...> - 2001-03-10 12:48:58
|
--- D-Man <ds...@ri...> wrote: > On Fri, Mar 09, 2001 at 06:40:38AM -0800, John Mudd wrote: ---snip--- > > Since you wrote this in Python to start with I'll assume you like > python and are convinced of its merits. It would probably be > advantageous for you to determine why your group is pushing for Java. > If it is because of simpler coding, portability, etc, then maybe you > could present Python as an alternative. If you can manage to get > Python bindings for your CORBA orb that would help as well. (BTW, > ORBit has Python bindings, it's the free open source orb that GNOME > uses) I've been looking for something like python for years. It's the best! I finally have a medium in which I can express my algorithms. But... As I heard years ago and still agree with, it's not the tool but the person that champions the tool. I'm afraid I'm currently not in a good position in my current group to champion Python. Over the years I've noticed a pattern. New tribes arrive on the scene and wrestle with the presiding regime for power. It's not enough to show up and do good work in order to lead us in a new direction. Consistently, the new groups actually has little to offer beyond their self marketing and soon must resort to bashing the old group in a desperate attempt to gain favor with the mother & father figures. Well, I guess that's politics and can be expected. But, having made the "mistake" of actually produced working software in the past I am now a target. If I say it's white then the reply is often that it's black. Ugh. The tide will turn but slowly. In the meantime I am ridiculed for trying Python. Is there a lesson here for those who would like to see Python/Jython become mainstream? Certain religions have clauses requiring members to pass the word. It's lead to nasty conflicts but who can argue with their numbers. And then there's the tobacco companies... ---snip--- > > I don't know very much about the 286's architecture other than it is Me either. I think the big flaw was a bizzare memory mapping scheme. ---snip--- > > If you want to read a good article comparing several languages and > their performance vs. code size, check IEEE Computer magazine from a > few months ago. It compared C, C++, Java, Python, Perl, Tcl, and > Rexx. Good suggestion as I've already got it. I highlighted the chart that I interpreted to say that Python is the *best* choice for productivity. It was the only thing pinned to my cube wall. Alas, there was a flaw in my thinking that young rogue programmers (excuse me, anal ists with advanced degrees) can be taught anything based on objective research. ---snip--- > but writting Java extensions to Jython seems to be extremely easy. *Agreed!* ---snip--- __________________________________________________ Do You Yahoo!? Yahoo! Auctions - Buy the things you want at great prices. http://auctions.yahoo.com/ |
From: Ype K. <yk...@xs...> - 2001-03-10 21:41:00
|
John, you wrote: <snip> > >I've been looking for something like python for years. It's the best! >I finally have a medium in which I can express my algorithms. > >But... As I heard years ago and still agree with, it's not the tool >but the person that champions the tool. I'm afraid I'm currently not >in a good position in my current group to champion Python. Over the >years I've noticed a pattern. New tribes arrive on the scene and >wrestle with the presiding regime for power. It's not enough to show >up and do good work in order to lead us in a new direction. >Consistently, the new groups actually has little to offer beyond their >self marketing and soon must resort to bashing the old group in a >desperate attempt to gain favor with the mother & father figures. It's unusual to see things like bashing around python/jython. They don't need it. >Well, I guess that's politics and can be expected. But, having made >the "mistake" of actually produced working software in the past I am >now a target. If I say it's white then the reply is often that it's >black. Ugh. The tide will turn but slowly. In the meantime I am >ridiculed for trying Python. > >Is there a lesson here for those who would like to see Python/Jython >become mainstream? Certain religions have clauses requiring members to >pass the word. It's lead to nasty conflicts but who can argue with >their numbers. And then there's the tobacco companies... Iirc, you work in a Java environment. As long as you're allowed to put jython.jar on the class path, and you are willing to write a tiny bit of code to allow embedded jython scripting, you can use Jython where you see fit. Popular areas are: - exploring Java API's interactively, - testing, - prototyping. Before long you'll hit one of these. Remember how Linux is getting popular? <snip> >... I highlighted the chart that I >interpreted to say that Python is the *best* choice for productivity. >It was the only thing pinned to my cube wall. Alas, there was a flaw >in my thinking that young rogue programmers (excuse me, anal ists with >advanced degrees) can be taught anything based on objective research. People are primarily based on habits, and it is a personal investment to get familiar with a new programming language. From Java to Jython is quite straightforward as Jython is almost readable when you know Java. Just shake off the type checking mood introduced by the Java compiler, bite through one or two syntax quirks, and productivity is there. (Perhaps I am a bit overoptimistic, but if they have advanced degrees, who knows?) Then start writing adapters in two or three lines, instead of in two or three classes/interfaces, and you're sold for the rest of your career. And then you have only just begun: - change a GUI within 20 seconds for prototyping, - from threading import WhatYouNeed, instead of Java synchronized/notify/wait. - implement a state pattern by simply reassigning methods, Have fun, Ype |