From chris.mcavoy at gmail.com Wed May 2 17:50:28 2007 From: chris.mcavoy at gmail.com (Chris McAvoy) Date: Wed, 2 May 2007 16:50:28 -0500 Subject: [Chirb] Fwd: [RHS] Announcing TechCoffee, Season 4 In-Reply-To: References: Message-ID: <3096c19d0705021450u441a73d3o7dd4d708671aaaff@mail.gmail.com> Hi Chirbs, A forward from the latest organizer of the TechCoffee cabal, season 4 is starting. This is the season where _we all get laid_: ---------- Forwarded message ---------- From: John Melesky Date: May 2, 2007 4:47 PM Subject: [RHS] Announcing TechCoffee, Season 4 To: river at lists.rudolphheringsociety.org Hear, ye! Hear, ye! TechCoffee is set to begin its fourth Season! TechCoffee Season 4 starts Monday, May 7th, at 6AM, and continues for ten weeks. Do you code in your off time? Do you really *want* to code in your off time, but end up engaging in debates on Slashdot instead? At TechCoffee, you get up early, and go hang out for a couple hours with other people who are coding. It's like a running club, only creative. Or a knitting bee with less chitchat. Or a hackathon that lasts only a couple hours. It's an idea that's had three successful seasons so far, and is primed to get us up and out in the morning air. WHEN: Show up at 6AM Monday morning (May 7th), and every monday morning after that, till July 9th. WHERE: The Caribou Coffee located at 200 N LaSalle (the corner of LaSalle and Lake), easily accessible from all L lines. For more details (including maps and such), hit http://techcoffee.com/ Ten weeks is how long we last. One commit a week is all we ask. -johnnnnnnnnn _______________________________________________ river mailing list river at lists.rudolphheringsociety.org http://lists.rudolphheringsociety.org/listinfo.cgi/river-rudolphheringsociety.org From cremes.devlist at mac.com Mon May 7 22:15:15 2007 From: cremes.devlist at mac.com (cremes.devlist at mac.com) Date: Mon, 7 May 2007 21:15:15 -0500 Subject: [Chirb] Thank you, Micah Message-ID: <94CE1044-C14C-47ED-8E8D-1DFFA3C76E29@mac.com> I'd like to thank Micah for a great presentation tonight. The last time I messed with finite automata was 1992 in college and all we covered was theory instead of practical application. Tonight's demo and exercise helped cement in my mind how to actually *use* these things. Structuring my AJAX code using state machines will go a long way towards cleaning up that frightful mess (my code, that is). Again, thanks. cr From natebkirby at yahoo.com Mon May 7 23:11:49 2007 From: natebkirby at yahoo.com (Nate Kirby) Date: Tue, 08 May 2007 11:11:49 +0800 Subject: [Chirb] Thank you, Micah In-Reply-To: <94CE1044-C14C-47ED-8E8D-1DFFA3C76E29@mac.com> References: <94CE1044-C14C-47ED-8E8D-1DFFA3C76E29@mac.com> Message-ID: <463FEA75.2070001@yahoo.com> This sounds great. Were there slides with this presentation? Nate cremes.devlist at mac.com wrote: > I'd like to thank Micah for a great presentation tonight. The last > time I messed with finite automata was 1992 in college and all we > covered was theory instead of practical application. Tonight's demo > and exercise helped cement in my mind how to actually *use* these > things. Structuring my AJAX code using state machines will go a long > way towards cleaning up that frightful mess (my code, that is). > > Again, thanks. > > cr > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > From cremes.devlist at mac.com Tue May 8 07:57:47 2007 From: cremes.devlist at mac.com (cremes.devlist at mac.com) Date: Tue, 8 May 2007 06:57:47 -0500 Subject: [Chirb] practical statemachine book Message-ID: <3AF84496-DD53-40ED-BB2E-2334857C57C9@mac.com> Last night's meeting has gotten me excited about statemachines. Since Micah learned at the knee of a statemachine great, I figured I could look up Robert C. Martin on Amazon and find at least one good book on finite automata. No dice. Searching for statemachine and finite automata I got a long list of books that, according to the reviews, are purely about theory and don't contain any code or discussions of practical applications. Anyone on this list have a pointer to a good book on finite automata that discusses the practical aspects of it? I do NOT want a book filled with proofs and long windy discussions on theory. If no good books exist, how about a pointer to a project or two that contains some code? Language doesn't matter... I can translate most of them. Thanks for any suggestions. cr From sean.seanlynch at gmail.com Tue May 8 10:06:39 2007 From: sean.seanlynch at gmail.com (Sean Lynch) Date: Tue, 8 May 2007 09:06:39 -0500 Subject: [Chirb] practical statemachine book In-Reply-To: <3AF84496-DD53-40ED-BB2E-2334857C57C9@mac.com> References: <3AF84496-DD53-40ED-BB2E-2334857C57C9@mac.com> Message-ID: <40651cc90705080706jf8a3015h5fb5213c6904cda5@mail.gmail.com> does Knuth-Morris-Pratt in grep count as a finite state machine? http://www.ics.uci.edu/~eppstein/161/kmp/ On 5/8/07, cremes.devlist at mac.com wrote: > Last night's meeting has gotten me excited about statemachines. Since > Micah learned at the knee of a statemachine great, I figured I could > look up Robert C. Martin on Amazon and find at least one good book on > finite automata. No dice. Searching for statemachine and finite > automata I got a long list of books that, according to the reviews, > are purely about theory and don't contain any code or discussions of > practical applications. > > Anyone on this list have a pointer to a good book on finite automata > that discusses the practical aspects of it? I do NOT want a book > filled with proofs and long windy discussions on theory. > > If no good books exist, how about a pointer to a project or two that > contains some code? Language doesn't matter... I can translate most > of them. > > Thanks for any suggestions. > > cr > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > From chris.mcavoy at gmail.com Tue May 8 10:18:35 2007 From: chris.mcavoy at gmail.com (Chris McAvoy) Date: Tue, 8 May 2007 09:18:35 -0500 Subject: [Chirb] ChiPy meeting Thursday May 10, 7pm Message-ID: <3096c19d0705080718g9657ae2h52f31101cf51f2ad@mail.gmail.com> Chicago Python User Group ========================= Come join us for our best meeting ever! Topics ------ Lightning talks! setuptools, zvm, bayesian stuff, all kinds of great mini-talks with a Python twist, bring yours! Location -------- Skinnycorp (http://skinnycorp.com) 4043 N. Ravenswood Ave. Chicago Suite 106 About ChiPy ----------- ChiPy is a group of Chicago Python Programmers, l33t, and n00bs. Meetings are held monthly at various locations around Chicago. Also, ChiPy is a proud sponsor of many Open Source and Educational efforts in Chicago. Stay tuned to the mailing list for more info. ChiPy website: ChiPy Mailing List: Python website: From micah at 8thlight.com Tue May 8 10:31:34 2007 From: micah at 8thlight.com (Micah Martin) Date: Tue, 8 May 2007 09:31:34 -0500 Subject: [Chirb] Thank you, Micah In-Reply-To: <463FEA75.2070001@yahoo.com> References: <94CE1044-C14C-47ED-8E8D-1DFFA3C76E29@mac.com> <463FEA75.2070001@yahoo.com> Message-ID: <21D1D634-EB4D-415D-8EC4-06F871875384@8thlight.com> You can download the slides and exercise off my blog: http://blog.8thlight.com/articles/2007/05/08/chirb-statemachine-talk Micah Martin 8th Light, Inc. 8thlight.com On May 7, 2007, at 10:11 PM, Nate Kirby wrote: > This sounds great. > > Were there slides with this presentation? > > Nate > > cremes.devlist at mac.com wrote: >> I'd like to thank Micah for a great presentation tonight. The last >> time I messed with finite automata was 1992 in college and all we >> covered was theory instead of practical application. Tonight's demo >> and exercise helped cement in my mind how to actually *use* these >> things. Structuring my AJAX code using state machines will go a long >> way towards cleaning up that frightful mess (my code, that is). >> >> Again, thanks. >> >> cr >> _______________________________________________ >> ChicagoGroup-Members-List at rubyforge.org >> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list >> >> >> > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070508/0a9a1556/attachment-0001.html From micah at 8thlight.com Tue May 8 10:42:33 2007 From: micah at 8thlight.com (Micah Martin) Date: Tue, 8 May 2007 09:42:33 -0500 Subject: [Chirb] practical statemachine book In-Reply-To: <3AF84496-DD53-40ED-BB2E-2334857C57C9@mac.com> References: <3AF84496-DD53-40ED-BB2E-2334857C57C9@mac.com> Message-ID: <14085E6B-EDCD-47AE-B7D6-88DC0871E006@8thlight.com> There's a chapter on Finite State Machine in Unclebob's UML for Java Programmers... and Agile Software Development with C#. I don't have a copy to confirm it but I believe UML Distilled discusses statemachines. You could look at the examples in SMC... http://objectmentor.com/resources/bin/smcJava.zip I'm sure we could make the source code available as well. And of course you can checkout the Ruby Statemachine code: http://viewvc.rubyforge.mmmultiworks.com/cgi/viewvc.cgi/? root=statemachine svn checkout svn://rubyforge.org/var/svn/statemachine Micah Martin 8th Light, Inc. 8thlight.com On May 8, 2007, at 6:57 AM, cremes.devlist at mac.com wrote: > Last night's meeting has gotten me excited about statemachines. Since > Micah learned at the knee of a statemachine great, I figured I could > look up Robert C. Martin on Amazon and find at least one good book on > finite automata. No dice. Searching for statemachine and finite > automata I got a long list of books that, according to the reviews, > are purely about theory and don't contain any code or discussions of > practical applications. > > Anyone on this list have a pointer to a good book on finite automata > that discusses the practical aspects of it? I do NOT want a book > filled with proofs and long windy discussions on theory. > > If no good books exist, how about a pointer to a project or two that > contains some code? Language doesn't matter... I can translate most > of them. > > Thanks for any suggestions. > > cr > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070508/a25541a0/attachment.html From christopher.mcmahon at gmail.com Tue May 8 10:56:54 2007 From: christopher.mcmahon at gmail.com (Chris McMahon) Date: Tue, 8 May 2007 08:56:54 -0600 Subject: [Chirb] practical statemachine book In-Reply-To: <3AF84496-DD53-40ED-BB2E-2334857C57C9@mac.com> References: <3AF84496-DD53-40ED-BB2E-2334857C57C9@mac.com> Message-ID: <72799cd70705080756i5092aaf0k861dd5835ed80dc6@mail.gmail.com> > Anyone on this list have a pointer to a good book on finite automata > that discusses the practical aspects of it? I do NOT want a book > filled with proofs and long windy discussions on theory. > > If no good books exist, how about a pointer to a project or two that > contains some code? Language doesn't matter... I can translate most > of them. It's not exactly what you want, but Harry Robinson's work in Model Based Testing is based on state machines. He's got some code available from some of his conference presentations. And Boris Beizer's "Black Box Testing" is big on state machines. It's really dense, and it's been years since I read it, but there might be some code in there. From trevorturk at yahoo.com Mon May 14 20:48:18 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Mon, 14 May 2007 19:48:18 -0500 Subject: [Chirb] A Rails Forum... almost done! Message-ID: Hello all, I just returned to Chicago after about 4 months of living in Australia and New Zealand, where I taught myself Ruby/Rails by building a forum. I used Beast as a cheat-sheet of sorts, but this app is designed to replace a small PunBB forum that I'm running for my friends. I'm aaaalmost done, but there are still a few things missing. I'm wondering if any of you would be interested in helping out with this project. I'm planning on releasing the app as open-source, but I'd like to get the thing up and running on as a PunBB replacement on my site before going down that road. You can see the site I intend to replace here: http://newathens.org It's running on a terrible mash-up of PunBB and Wordpress right now. A running version of the new app is here: http://massmsg.com You can see what I have left on my must-have development list here: http://trevorturk.backpackit.com/page/972326 The future plans and wacky ideas list is here: http://trevorturk.backpackit.com/page/972338 If you're at all curious about this, I'd absolutely love to get somebody else involved. My Rails-fu isn't the absolute best, and I certainly could use some help at this point in the project. If you'd like a copy of the source code or you have any questions, please don't hesitate to get in touch with me. You can drop me an email or call me at 312 339 6124. As a side note, I'm looking for work doing Rails development. If you or your company is looking to hire, let me know! Thanks! - Trevor From wrfroelich at yahoo.com Tue May 15 00:37:42 2007 From: wrfroelich at yahoo.com (Bill Froelich) Date: Mon, 14 May 2007 21:37:42 -0700 (PDT) Subject: [Chirb] A Rails Forum... almost done! Message-ID: <915982.97758.qm@web36611.mail.mud.yahoo.com> Trevor, I was trying to take a look at your must-have development list but can't seem to access the page. It prompts for your password. I signed up for a free account thinking that would get me access but I couldn't figure it out. --Bill ----- Original Message ---- From: Trevor Turk To: chicagogroup-members-list at rubyforge.org Sent: Monday, May 14, 2007 7:48:18 PM Subject: [Chirb] A Rails Forum... almost done! Hello all, I just returned to Chicago after about 4 months of living in Australia and New Zealand, where I taught myself Ruby/Rails by building a forum. I used Beast as a cheat-sheet of sorts, but this app is designed to replace a small PunBB forum that I'm running for my friends. I'm aaaalmost done, but there are still a few things missing. I'm wondering if any of you would be interested in helping out with this project. I'm planning on releasing the app as open-source, but I'd like to get the thing up and running on as a PunBB replacement on my site before going down that road. You can see the site I intend to replace here: http://newathens.org It's running on a terrible mash-up of PunBB and Wordpress right now. A running version of the new app is here: http://massmsg.com You can see what I have left on my must-have development list here: http://trevorturk.backpackit.com/page/972326 The future plans and wacky ideas list is here: http://trevorturk.backpackit.com/page/972338 If you're at all curious about this, I'd absolutely love to get somebody else involved. My Rails-fu isn't the absolute best, and I certainly could use some help at this point in the project. If you'd like a copy of the source code or you have any questions, please don't hesitate to get in touch with me. You can drop me an email or call me at 312 339 6124. As a side note, I'm looking for work doing Rails development. If you or your company is looking to hire, let me know! Thanks! - Trevor _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list ____________________________________________________________________________________Ready for the edge of your seat? Check out tonight's top picks on Yahoo! TV. http://tv.yahoo.com/ From trevorturk at yahoo.com Tue May 15 00:46:31 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Mon, 14 May 2007 23:46:31 -0500 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: <915982.97758.qm@web36611.mail.mud.yahoo.com> References: <915982.97758.qm@web36611.mail.mud.yahoo.com> Message-ID: Bill, I'm sorry - I must have sent the wrong link. These should work: Must-have: http://trevorturk.backpackit.com/pub/972326 Later: http://trevorturk.backpackit.com/pub/972338 Let me know if that works for you. - Trevor On 5/14/07, Bill Froelich wrote: > Trevor, > > I was trying to take a look at your must-have development list but can't seem to access the page. It prompts for your password. I signed up for a free account thinking that would get me access but I couldn't figure it out. > > --Bill > > ----- Original Message ---- > From: Trevor Turk > To: chicagogroup-members-list at rubyforge.org > Sent: Monday, May 14, 2007 7:48:18 PM > Subject: [Chirb] A Rails Forum... almost done! > > Hello all, > > I just returned to Chicago after about 4 months of living in Australia > and New Zealand, where I taught myself Ruby/Rails by building a forum. > I used Beast as a cheat-sheet of sorts, but this app is designed to > replace a small PunBB forum that I'm running for my friends. I'm > aaaalmost done, but there are still a few things missing. > > I'm wondering if any of you would be interested in helping out with > this project. I'm planning on releasing the app as open-source, but > I'd like to get the thing up and running on as a PunBB replacement on > my site before going down that road. > > You can see the site I intend to replace here: > http://newathens.org > > It's running on a terrible mash-up of PunBB and Wordpress right now. > > A running version of the new app is here: > http://massmsg.com > > You can see what I have left on my must-have development list here: > http://trevorturk.backpackit.com/page/972326 > > The future plans and wacky ideas list is here: > http://trevorturk.backpackit.com/page/972338 > > If you're at all curious about this, I'd absolutely love to get > somebody else involved. My Rails-fu isn't the absolute best, and I > certainly could use some help at this point in the project. > > If you'd like a copy of the source code or you have any questions, > please don't hesitate to get in touch with me. You can drop me an > email or call me at 312 339 6124. > > As a side note, I'm looking for work doing Rails development. If you > or your company is looking to hire, let me know! > > Thanks! > - Trevor > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > > > ____________________________________________________________________________________Ready for the edge of your seat? > Check out tonight's top picks on Yahoo! TV. > http://tv.yahoo.com/ > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > From wrfroelich at yahoo.com Tue May 15 00:47:42 2007 From: wrfroelich at yahoo.com (Bill Froelich) Date: Mon, 14 May 2007 21:47:42 -0700 (PDT) Subject: [Chirb] A Rails Forum... almost done! Message-ID: <145443.1942.qm@web36611.mail.mud.yahoo.com> Much better thanks! ----- Original Message ---- From: Trevor Turk To: Chirb discussion list Sent: Monday, May 14, 2007 11:46:31 PM Subject: Re: [Chirb] A Rails Forum... almost done! Bill, I'm sorry - I must have sent the wrong link. These should work: Must-have: http://trevorturk.backpackit.com/pub/972326 Later: http://trevorturk.backpackit.com/pub/972338 Let me know if that works for you. - Trevor On 5/14/07, Bill Froelich wrote: > Trevor, > > I was trying to take a look at your must-have development list but can't seem to access the page. It prompts for your password. I signed up for a free account thinking that would get me access but I couldn't figure it out. > > --Bill > > ----- Original Message ---- > From: Trevor Turk > To: chicagogroup-members-list at rubyforge.org > Sent: Monday, May 14, 2007 7:48:18 PM > Subject: [Chirb] A Rails Forum... almost done! > > Hello all, > > I just returned to Chicago after about 4 months of living in Australia > and New Zealand, where I taught myself Ruby/Rails by building a forum. > I used Beast as a cheat-sheet of sorts, but this app is designed to > replace a small PunBB forum that I'm running for my friends. I'm > aaaalmost done, but there are still a few things missing. > > I'm wondering if any of you would be interested in helping out with > this project. I'm planning on releasing the app as open-source, but > I'd like to get the thing up and running on as a PunBB replacement on > my site before going down that road. > > You can see the site I intend to replace here: > http://newathens.org > > It's running on a terrible mash-up of PunBB and Wordpress right now. > > A running version of the new app is here: > http://massmsg.com > > You can see what I have left on my must-have development list here: > http://trevorturk.backpackit.com/page/972326 > > The future plans and wacky ideas list is here: > http://trevorturk.backpackit.com/page/972338 > > If you're at all curious about this, I'd absolutely love to get > somebody else involved. My Rails-fu isn't the absolute best, and I > certainly could use some help at this point in the project. > > If you'd like a copy of the source code or you have any questions, > please don't hesitate to get in touch with me. You can drop me an > email or call me at 312 339 6124. > > As a side note, I'm looking for work doing Rails development. If you > or your company is looking to hire, let me know! > > Thanks! > - Trevor > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > > > ____________________________________________________________________________________Ready for the edge of your seat? > Check out tonight's top picks on Yahoo! TV. > http://tv.yahoo.com/ > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list ____________________________________________________________________________________ 8:00? 8:25? 8:40? Find a flick in no time with the Yahoo! Search movie showtime shortcut. http://tools.search.yahoo.com/shortcuts/#news From mattjonesphoto at gmail.com Tue May 15 07:14:42 2007 From: mattjonesphoto at gmail.com (Matt Jones) Date: Tue, 15 May 2007 06:14:42 -0500 Subject: [Chirb] Help wanted with admin section of site... Message-ID: <9419ba00705150414r2fdf743v47b3da91991036ae@mail.gmail.com> Hello, First, let me say thanks to all the organizers of the ruby group. I attended my first meeting last week, and look forward to attending many more. I have a side project in rails that I'm working on. But I find myself with a lot less time lately. I need to hire some help. To be clear, I'm not looking to hire anybody for full-time work. Just part time to help me get this done. The main tasks you'd be doing would be working on the administrative area. I'm using the sub_list plugin right now. The site will be an online photo ordering system for photographers. If interested, respond with a brief introduction, and I'll follow-up. Thanks, Matt -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070515/d4936cdd/attachment.html From peter at oaktop.com Wed May 16 00:28:26 2007 From: peter at oaktop.com (Peter K Chan) Date: Wed, 16 May 2007 00:28:26 -0400 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: References: <915982.97758.qm@web36611.mail.mud.yahoo.com> Message-ID: Hi Trevor, Welcome back to Chicago! Your Rails app looks very nice. Do you have a name for it? Peter -----Original Message----- From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Trevor Turk Sent: Monday, May 14, 2007 11:47 PM To: Chirb discussion list Subject: Re: [Chirb] A Rails Forum... almost done! Bill, I'm sorry - I must have sent the wrong link. These should work: Must-have: http://trevorturk.backpackit.com/pub/972326 Later: http://trevorturk.backpackit.com/pub/972338 Let me know if that works for you. - Trevor On 5/14/07, Bill Froelich wrote: > Trevor, > > I was trying to take a look at your must-have development list but can't seem to access the page. It prompts for your password. I signed up for a free account thinking that would get me access but I couldn't figure it out. > > --Bill > > ----- Original Message ---- > From: Trevor Turk > To: chicagogroup-members-list at rubyforge.org > Sent: Monday, May 14, 2007 7:48:18 PM > Subject: [Chirb] A Rails Forum... almost done! > > Hello all, > > I just returned to Chicago after about 4 months of living in Australia > and New Zealand, where I taught myself Ruby/Rails by building a forum. > I used Beast as a cheat-sheet of sorts, but this app is designed to > replace a small PunBB forum that I'm running for my friends. I'm > aaaalmost done, but there are still a few things missing. > > I'm wondering if any of you would be interested in helping out with > this project. I'm planning on releasing the app as open-source, but > I'd like to get the thing up and running on as a PunBB replacement on > my site before going down that road. > > You can see the site I intend to replace here: > http://newathens.org > > It's running on a terrible mash-up of PunBB and Wordpress right now. > > A running version of the new app is here: > http://massmsg.com > > You can see what I have left on my must-have development list here: > http://trevorturk.backpackit.com/page/972326 > > The future plans and wacky ideas list is here: > http://trevorturk.backpackit.com/page/972338 > > If you're at all curious about this, I'd absolutely love to get > somebody else involved. My Rails-fu isn't the absolute best, and I > certainly could use some help at this point in the project. > > If you'd like a copy of the source code or you have any questions, > please don't hesitate to get in touch with me. You can drop me an > email or call me at 312 339 6124. > > As a side note, I'm looking for work doing Rails development. If you > or your company is looking to hire, let me know! > > Thanks! > - Trevor > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > > > ________________________________________________________________________ ____________Ready for the edge of your seat? > Check out tonight's top picks on Yahoo! TV. > http://tv.yahoo.com/ > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list From trevorturk at yahoo.com Wed May 16 08:27:42 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Wed, 16 May 2007 07:27:42 -0500 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: References: <915982.97758.qm@web36611.mail.mud.yahoo.com> Message-ID: Peter, One of my friends came up with the name El Dorado, like the classic Cadillac car or the mythical lost city of gold. The site that inspired it is called New Athens, though, so I was thinking of using that name as well. I guess I'm not too sure yet! - Trevor On 5/15/07, Peter K Chan wrote: > Hi Trevor, > Welcome back to Chicago! Your Rails app looks very nice. Do you > have a name for it? > > Peter From sean.seanlynch at gmail.com Wed May 16 09:58:51 2007 From: sean.seanlynch at gmail.com (Sean Lynch) Date: Wed, 16 May 2007 08:58:51 -0500 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: References: <915982.97758.qm@web36611.mail.mud.yahoo.com> Message-ID: <40651cc90705160658y6f0f0a79mc2a8dcfc53d5b713@mail.gmail.com> On 5/16/07, Trevor Turk wrote: > Peter, > > One of my friends came up with the name El Dorado, like the classic > Cadillac car or the mythical lost city of gold. The site that inspired > it is called New Athens, though, so I was thinking of using that name > as well. I guess I'm not too sure yet! > > - Trevor > As a former resident of the great state of New Mexico, might I suggest Cibola? http://en.wikipedia.org/wiki/Cibola It was one of the seven legendary cities, and a nice national forest. From trevorturk at yahoo.com Wed May 16 10:58:58 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Wed, 16 May 2007 09:58:58 -0500 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: <40651cc90705160658y6f0f0a79mc2a8dcfc53d5b713@mail.gmail.com> References: <915982.97758.qm@web36611.mail.mud.yahoo.com> <40651cc90705160658y6f0f0a79mc2a8dcfc53d5b713@mail.gmail.com> Message-ID: Hmm... intriguing. I didn't realize there were 7 cities of gold!? On 5/16/07, Sean Lynch wrote: > As a former resident of the great state of New Mexico, might I suggest Cibola? > http://en.wikipedia.org/wiki/Cibola > > It was one of the seven legendary cities, and a nice national forest. From peter at oaktop.com Wed May 16 13:47:14 2007 From: peter at oaktop.com (Peter K Chan) Date: Wed, 16 May 2007 13:47:14 -0400 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: References: <915982.97758.qm@web36611.mail.mud.yahoo.com> Message-ID: Trevor, Any name is better than no name; otherwise, it would be hard for us to refer to it. Do post an update when you have the source up. I would be interested to take a look and get some inspiration. Peter -----Original Message----- From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Trevor Turk Sent: Wednesday, May 16, 2007 7:28 AM To: Chirb discussion list Subject: Re: [Chirb] A Rails Forum... almost done! Peter, One of my friends came up with the name El Dorado, like the classic Cadillac car or the mythical lost city of gold. The site that inspired it is called New Athens, though, so I was thinking of using that name as well. I guess I'm not too sure yet! - Trevor On 5/15/07, Peter K Chan wrote: > Hi Trevor, > Welcome back to Chicago! Your Rails app looks very nice. Do you > have a name for it? > > Peter _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list From trevorturk at yahoo.com Wed May 16 14:08:00 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Wed, 16 May 2007 13:08:00 -0500 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: References: <915982.97758.qm@web36611.mail.mud.yahoo.com> Message-ID: Peter, I'm sorry if I didn't make this more clear, but I'm happy to share the source with anyone that's interested - I just haven't posted in online yet. I'll email you directly with the code, but I wanted to send this out to the list in case anybody else in interested. - Trevor On 5/16/07, Peter K Chan wrote: > Trevor, > Any name is better than no name; otherwise, it would be hard for > us to refer to it. > > Do post an update when you have the source up. I would be > interested to take a look and get some inspiration. > > Peter From jcroneme at thoughtworks.com Wed May 16 15:08:00 2007 From: jcroneme at thoughtworks.com (Josh Cronemeyer) Date: Wed, 16 May 2007 14:08:00 -0500 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: Message-ID: I recommend just uploading it to google project. Free subversion, and it is dead easy to use. http://code.google.com/hosting/ Josh Cronemeyer chicagogroup-members-list-bounces at rubyforge.org wrote on 05/16/2007 01:08:00 PM: > Peter, > > I'm sorry if I didn't make this more clear, but I'm happy to share the > source with anyone that's interested - I just haven't posted in online > yet. I'll email you directly with the code, but I wanted to send this > out to the list in case anybody else in interested. > > - Trevor > > On 5/16/07, Peter K Chan wrote: > > Trevor, > > Any name is better than no name; otherwise, it would be hard for > > us to refer to it. > > > > Do post an update when you have the source up. I would be > > interested to take a look and get some inspiration. > > > > Peter > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070516/aca36ab0/attachment.html From trevorturk at yahoo.com Wed May 16 17:13:10 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Wed, 16 May 2007 16:13:10 -0500 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: References: Message-ID: Josh, I'm using Subversion now, but it can only be accessed via svn+ssh, which is a pain. (Thanks again, Media Temple!) I just tried to get a hosting account at Google, but it's giving me an error saying there's a name collision when there really isn't. I'm going to track down the problem, and I'll post the link up here when it's all set. - Trevor On 5/16/07, Josh Cronemeyer wrote: > > I recommend just uploading it to google project. Free subversion, and it is > dead easy to use. http://code.google.com/hosting/ > > Josh Cronemeyer From cserrato at amazon.com Wed May 16 18:16:54 2007 From: cserrato at amazon.com (Serrato, Crystal) Date: Wed, 16 May 2007 15:16:54 -0700 Subject: [Chirb] Amazon.com Interviewing Software Development Engineers in Chicago 6/8/07! Message-ID: <72F201B96679014384FD7B9529661D7005E04FD1@exchg-sea5-01.ant.amazon.com> Are you passionate about building systems that have a visible and immediate impact on millions of customers? Do you want to build innovative solutions that leverage Amazon's platform assets to grow our customer base? Are you excited about building large-scale, distributed, highly-available systems using the latest technology? Then, Amazon Payments Team is the place for you! We are building innovative products for improving the eCommerce payments experience for millions of Amazon customers (developers, buyers and sellers) and are looking for Software Development Engineers who have experience in multi-tiered, distributed and highly available customer-facing, web-services applications and are passionate about improving customer experience. Amazon.com is sending members from Payments team to interview candidates in?Chicago?for Seattle-based opportunities 06/08/07. Did you know that Amazon.com has hundreds of software engineers working on some of the most interesting technical challenges on the planet? Amazon.com, headquartered in beautiful Seattle, is looking for exceptional software engineers to join its growing technology organization. Our engineering teams work on tough technical problems that engage and stretch their brains. As an engineer here, you might build cutting edge product recommendation algorithms, scale and optimize our world class supply chain systems, or architect and build an end-to-end e-commerce platform that companies like Target use to run their online business. You'll work with smart, experienced teammates on a small cross-functional team. You'll join a scientific culture focused on achieving aggressive goals. And, you'll work on creating a world-class customer experience for the millions of people who use Amazon.com. Key Responsibilities: * Participate in the full development life cycle, working within broadly defined parameters, including test plan execution and software quality needs * Own the delivery of an entire piece of a system or application, and serve as a technical lead on small to midsize to complex projects * Management and execution against project plans and delivery commitments * Work closely with the architects to develop the best technical design and approach for new product development * Build software solutions where the problem is not well defined. Design and define the interaction between the other component pieces * Create and execute appropriate quality plans, project plans, test strategies and processes for development activities in concert with business and project management efforts Experience/Education Required/Desired: * Bachelors degree (Masters/PhD preferred) or equivalent experience * Proven results-oriented person with a delivery focus * Excellent verbal and written communication skills * Ability to work well with people and be both highly motivated and motivating * 3-5 years experience in Software development * Development expertise in data structures, complex algorithms, OOP, Perl, C++, Java, Web services, Linux * Experience in development of distributed/scalable systems and high-volume transaction applications * Ability to handle multiple competing priorities in a fast-paced environment Want to learn more? Please contact me at the below number. I look forward to hearing from you! crystal serrato?| technical recruiter | amazon.com | 206.266.5887 work hard.? have fun.? make history.?? ? From trevorturk at yahoo.com Tue May 22 12:55:46 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Tue, 22 May 2007 11:55:46 -0500 Subject: [Chirb] A Rails Forum... almost done! In-Reply-To: References: Message-ID: Whew! I got the Google Code account set up, and I cleaned out a couple of sensitive files from the Subversion history that I had accidentally committed. I changed the license to MIT, so I guess it's officially open-source now! Here's the link: http://code.google.com/p/eldorado/ http://eldorado.googlecode.com/svn/ It's not quite "production ready" as they say, but we're getting close. I'll post to this list again when it's ready for actual use :) Anyway, here's my list of to-do items. The first is critical stuff, the second is just brainstorming for the future: http://trevorturk.backpackit.com/pub/972326 http://trevorturk.backpackit.com/pub/972338 Again, if you're interested in helping out with the project, please don't hesitate to get in touch with me. Thanks, - Trevor On 5/16/07, Trevor Turk wrote: > I'm using Subversion now, but it can only be accessed via svn+ssh, > which is a pain. (Thanks again, Media Temple!) I just tried to get a > hosting account at Google, but it's giving me an error saying there's > a name collision when there really isn't. I'm going to track down the > problem, and I'll post the link up here when it's all set. From ryan at platte.name Tue May 22 23:25:17 2007 From: ryan at platte.name (Ryan Platte) Date: Tue, 22 May 2007 22:25:17 -0500 Subject: [Chirb] Plans for building standard images for server farms Message-ID: <2f1a1dcb0705222025x429487c5if2a969166be7bc2f@mail.gmail.com> David Heinemeier Hansson started this list yesterday: http://groups.google.com/group/rubyonrails-stack -- Ryan Platte -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070522/ff417d3b/attachment.html From MShah at Tribune.com Wed May 23 10:08:00 2007 From: MShah at Tribune.com (Shah, Manish) Date: Wed, 23 May 2007 09:08:00 -0500 Subject: [Chirb] Job opening: Software Developer, Ruby on Rails Message-ID: <783174FB7BD64546AFA5EA71B17FB474D36EA0@CHIMBEXVS1.TRIBUNE.AD.TRB> Description Software Developer, Ruby on Rails Tribune is one of the country's premier media companies, with broadcasting, publishing and Internet operations in the nation's major markets. Tribune Interactive, the Internet division of the Tribune Company, is currently seeking a Ruby on Rails Developer to be responsible for developing and supporting Internet application software. We are committed to paying for performance and will reward your efforts with an excellent compensation package, along with the world-class benefits of a major media company. Requirements Qualified candidates will have a Bachelors degree in Computer Science (or a related field) or prior work experience that is applicable to the position. The ideal profile includes 1-5 or more years of experience as a web developer with the following (Entry-level candidates with a solid interest and background will be considered): * Experience building n-tier Internet applications in Ruby on Rails, Java/J2EE, or related formal languages/frameworks. * Knowledge and/or experience of Ruby on Rails development framework/methodology * Demonstrated experience/knowledge building high-volume and customer facing database-driven web applications. * Thorough knowledge of relational databases (MySQL, Oracle), schema design and implementation, and SQL. * Experience with XML, Javascript, HTTP, and Web Services. * Experience working in Unix environments (Solaris, Linux). * Open-source software experience/knowledge a plus Must be able to work both independently and in a team environment and be able to interact effectively with other team members, management and clients. Must have excellent verbal/written communications skills, as there is a high degree of user interface. Requires a customer support orientation and competence in response to vendors and staff during system implementation and problem resolution. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070523/65fbd137/attachment-0001.html From mikelipinski at nuevista.com Thu May 24 15:09:02 2007 From: mikelipinski at nuevista.com (Mike Lipinski) Date: Thu, 24 May 2007 14:09:02 -0500 Subject: [Chirb] Ruby on Rails Contract opportunity in Chicago Message-ID: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> Was hoping to network with everyone in the Chicago Ruby User Group in regards to a contract opportunity. Our client is the world's foremost provider of traffic counting information, technology and decision support software for businesses in the retail, gaming, hospitality and entertainment industries. Our Client is a privately held company that is headquartered in Chicago, Illinois. We maintain seven satellite offices across the United States, Asia, Australia, Europe and South America. They are currently looking for a Ruby on Rails developer for at least a 4 month contract engagement, this project could potentially be extended long-term as some of our current consultants have already been extended. Ideally targeting a Developer with experience specifically with Ruby on Rails in a Unix environment. If candidate has relational database experience with Oracle that would be a huge plus. Other scripting languages such as Perl or Python would be a plus as well. If you or anyone you would recommend would be interested please feel free to either call or email me directly. Please feel free to foward my contact information along as well. Thanks, Michael Lipinski Senior Recruiter Nuevista 630-472-6838 x.104 630-472-0512 Direct 630-200-9563 Cell mikelipinski at nuevista.com www.nuevista.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070524/f2e11bd2/attachment.html From trevorturk at yahoo.com Thu May 24 15:50:18 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Thu, 24 May 2007 14:50:18 -0500 Subject: [Chirb] Ruby on Rails Contract opportunity in Chicago In-Reply-To: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> References: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> Message-ID: Hello, I'd be interested in hearing more about this position. I'm a mid-level Ruby/Rails programmer who graduated with a Philosophy degree from a liberal arts college - so I consider myself to be quite well rounded. I'm attaching my resume to this email. I also have an open-source Rails project that you might be interested in evaluating as a code sample. It's a forum, and I have plans to expand it well beyond that with a shared events calendar and mobile messaging a-la Twitter. The source can be found here: http://code.google.com/p/eldorado/source I look forward to hearing from you! - Trevor On 5/24/07, Mike Lipinski wrote: > > > Was hoping to network with everyone in the Chicago Ruby User Group in > regards to a contract opportunity. > > Our client is the world's foremost provider of traffic counting information, > technology and decision support software for businesses in the retail, > gaming, hospitality and entertainment industries. > > Our Client is a privately held company that is headquartered in Chicago, > Illinois. We maintain seven satellite offices across the United States, > Asia, Australia, Europe and South America. > > They are currently looking for a Ruby on Rails developer for at least a 4 > month contract engagement, this project could potentially be extended > long-term as some of our current consultants have already been extended. > Ideally targeting a Developer with experience specifically with Ruby on > Rails in a Unix environment. If candidate has relational database > experience with Oracle that would be a huge plus. Other scripting languages > such as Perl or Python would be a plus as well. > > If you or anyone you would recommend would be interested please feel free to > either call or email me directly. Please feel free to foward my contact > information along as well. > > Thanks, > > > Michael Lipinski > Senior Recruiter > Nuevista > 630-472-6838 x.104 > 630-472-0512 Direct > 630-200-9563 Cell > mikelipinski at nuevista.com > www.nuevista.com > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > -------------- next part -------------- A non-text attachment was scrubbed... Name: Trevor_Turk_Resume.pdf Type: application/pdf Size: 102521 bytes Desc: not available Url : http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070524/2fc03775/attachment-0001.pdf From mikelipinski at nuevista.com Thu May 24 16:01:36 2007 From: mikelipinski at nuevista.com (Mike Lipinski) Date: Thu, 24 May 2007 15:01:36 -0500 Subject: [Chirb] Ruby on Rails Contract opportunity in Chicago In-Reply-To: References: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> Message-ID: <929F670DAADC4548A1BAF5A81BD08D09185D41@nuevista-svr1.NUEVISTA.HQ> Trevor, I just got your voicemail, please feel free to call me when it is convenient to talk. I am very interested in talking with you about the opportunity as well as getting a better understanding of your background. Thanks, Michael Lipinski Senior Recruiter Nuevista 630-472-6838 x.104 630-472-0512 Direct 630-200-9563 Cell mikelipinski at nuevista.com www.nuevista.com -----Original Message----- From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Trevor Turk Sent: Thursday, May 24, 2007 2:50 PM To: Chirb discussion list Subject: Re: [Chirb] Ruby on Rails Contract opportunity in Chicago Hello, I'd be interested in hearing more about this position. I'm a mid-level Ruby/Rails programmer who graduated with a Philosophy degree from a liberal arts college - so I consider myself to be quite well rounded. I'm attaching my resume to this email. I also have an open-source Rails project that you might be interested in evaluating as a code sample. It's a forum, and I have plans to expand it well beyond that with a shared events calendar and mobile messaging a-la Twitter. The source can be found here: http://code.google.com/p/eldorado/source I look forward to hearing from you! - Trevor On 5/24/07, Mike Lipinski wrote: > > > Was hoping to network with everyone in the Chicago Ruby User Group in > regards to a contract opportunity. > > Our client is the world's foremost provider of traffic counting > information, technology and decision support software for businesses > in the retail, gaming, hospitality and entertainment industries. > > Our Client is a privately held company that is headquartered in > Chicago, Illinois. We maintain seven satellite offices across the > United States, Asia, Australia, Europe and South America. > > They are currently looking for a Ruby on Rails developer for at least > a 4 month contract engagement, this project could potentially be > extended long-term as some of our current consultants have already been extended. > Ideally targeting a Developer with experience specifically with Ruby > on Rails in a Unix environment. If candidate has relational database > experience with Oracle that would be a huge plus. Other scripting > languages such as Perl or Python would be a plus as well. > > If you or anyone you would recommend would be interested please feel > free to either call or email me directly. Please feel free to foward > my contact information along as well. > > Thanks, > > > Michael Lipinski > Senior Recruiter > Nuevista > 630-472-6838 x.104 > 630-472-0512 Direct > 630-200-9563 Cell > mikelipinski at nuevista.com > www.nuevista.com > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > From chris.mcavoy at gmail.com Thu May 24 16:24:19 2007 From: chris.mcavoy at gmail.com (Chris McAvoy) Date: Thu, 24 May 2007 15:24:19 -0500 Subject: [Chirb] Ruby on Rails Contract opportunity in Chicago In-Reply-To: <929F670DAADC4548A1BAF5A81BD08D09185D41@nuevista-svr1.NUEVISTA.HQ> References: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> <929F670DAADC4548A1BAF5A81BD08D09185D41@nuevista-svr1.NUEVISTA.HQ> Message-ID: <3096c19d0705241324n73d128ddwfd59b1a5c9c547a3@mail.gmail.com> Good luck with your talk guys. I was trying to think of a nice way to let you guys know that you were "on-the-air" so to speak, but I couldn't think of anything, so I just decided to use this a comic jumping off point. It's like telling someone their fly is down. How can you do that while still preserving their dignity? It's just too hard. Hey everyone, your flies are down. Chris On 5/24/07, Mike Lipinski wrote: > Trevor, > > I just got your voicemail, please feel free to call me when it is > convenient to talk. I am very interested in talking with you about the > opportunity as well as getting a better understanding of your > background. > > Thanks, > > Michael Lipinski > Senior Recruiter > Nuevista > 630-472-6838 x.104 > 630-472-0512 Direct > 630-200-9563 Cell > mikelipinski at nuevista.com > www.nuevista.com > > > -----Original Message----- > From: chicagogroup-members-list-bounces at rubyforge.org > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > Trevor Turk > Sent: Thursday, May 24, 2007 2:50 PM > To: Chirb discussion list > Subject: Re: [Chirb] Ruby on Rails Contract opportunity in Chicago > > Hello, > > I'd be interested in hearing more about this position. I'm a mid-level > Ruby/Rails programmer who graduated with a Philosophy degree from a > liberal arts college - so I consider myself to be quite well rounded. > > I'm attaching my resume to this email. I also have an open-source Rails > project that you might be interested in evaluating as a code sample. > It's a forum, and I have plans to expand it well beyond that with a > shared events calendar and mobile messaging a-la Twitter. The source can > be found here: > > http://code.google.com/p/eldorado/source > > I look forward to hearing from you! > - Trevor > > On 5/24/07, Mike Lipinski wrote: > > > > > > Was hoping to network with everyone in the Chicago Ruby User Group in > > regards to a contract opportunity. > > > > Our client is the world's foremost provider of traffic counting > > information, technology and decision support software for businesses > > in the retail, gaming, hospitality and entertainment industries. > > > > Our Client is a privately held company that is headquartered in > > Chicago, Illinois. We maintain seven satellite offices across the > > United States, Asia, Australia, Europe and South America. > > > > They are currently looking for a Ruby on Rails developer for at least > > a 4 month contract engagement, this project could potentially be > > extended long-term as some of our current consultants have already > been extended. > > Ideally targeting a Developer with experience specifically with Ruby > > on Rails in a Unix environment. If candidate has relational database > > experience with Oracle that would be a huge plus. Other scripting > > languages such as Perl or Python would be a plus as well. > > > > If you or anyone you would recommend would be interested please feel > > free to either call or email me directly. Please feel free to foward > > my contact information along as well. > > > > Thanks, > > > > > > Michael Lipinski > > Senior Recruiter > > Nuevista > > 630-472-6838 x.104 > > 630-472-0512 Direct > > 630-200-9563 Cell > > mikelipinski at nuevista.com > > www.nuevista.com > > > > > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > From trevorturk at yahoo.com Thu May 24 16:29:01 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Thu, 24 May 2007 15:29:01 -0500 Subject: [Chirb] Ruby on Rails Contract opportunity in Chicago In-Reply-To: <3096c19d0705241324n73d128ddwfd59b1a5c9c547a3@mail.gmail.com> References: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> <929F670DAADC4548A1BAF5A81BD08D09185D41@nuevista-svr1.NUEVISTA.HQ> <3096c19d0705241324n73d128ddwfd59b1a5c9c547a3@mail.gmail.com> Message-ID: Yeah, sorry about that mixup... Over! - Trevor On 5/24/07, Chris McAvoy wrote: > I was trying to think of a nice way to let you guys know that you were > "on-the-air" so to speak, but I couldn't think of anything, so I just > decided to use this a comic jumping off point. > > It's like telling someone their fly is down. How can you do that > while still preserving their dignity? It's just too hard. > > Hey everyone, your flies are down. From peter.fitzgibbons at gmail.com Thu May 24 16:30:30 2007 From: peter.fitzgibbons at gmail.com (Peter Fitzgibbons) Date: Thu, 24 May 2007 15:30:30 -0500 Subject: [Chirb] Ruby on Rails Contract opportunity in Chicago In-Reply-To: <3096c19d0705241324n73d128ddwfd59b1a5c9c547a3@mail.gmail.com> References: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> <929F670DAADC4548A1BAF5A81BD08D09185D41@nuevista-svr1.NUEVISTA.HQ> <3096c19d0705241324n73d128ddwfd59b1a5c9c547a3@mail.gmail.com> Message-ID: <670a00380705241330o48ad0becn4f901a00b68f87cf@mail.gmail.com> XYZ. When my new co-worker (1st day on the job!) hit me with that one, right after "HI I'm Tom", it took me a full 2 minutes to figure out what he was saying. On the other hand, I had to XYZ on my 1st day on the job once... so I guess it goes to show. Happy day guys. Peter Fitzgibbons On 5/24/07, Chris McAvoy wrote: > > Good luck with your talk guys. > > I was trying to think of a nice way to let you guys know that you were > "on-the-air" so to speak, but I couldn't think of anything, so I just > decided to use this a comic jumping off point. > > It's like telling someone their fly is down. How can you do that > while still preserving their dignity? It's just too hard. > > Hey everyone, your flies are down. > > Chris > > On 5/24/07, Mike Lipinski wrote: > > Trevor, > > > > I just got your voicemail, please feel free to call me when it is > > convenient to talk. I am very interested in talking with you about the > > opportunity as well as getting a better understanding of your > > background. > > > > Thanks, > > > > Michael Lipinski > > Senior Recruiter > > Nuevista > > 630-472-6838 x.104 > > 630-472-0512 Direct > > 630-200-9563 Cell > > mikelipinski at nuevista.com > > www.nuevista.com > > > > > > -----Original Message----- > > From: chicagogroup-members-list-bounces at rubyforge.org > > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > > Trevor Turk > > Sent: Thursday, May 24, 2007 2:50 PM > > To: Chirb discussion list > > Subject: Re: [Chirb] Ruby on Rails Contract opportunity in Chicago > > > > Hello, > > > > I'd be interested in hearing more about this position. I'm a mid-level > > Ruby/Rails programmer who graduated with a Philosophy degree from a > > liberal arts college - so I consider myself to be quite well rounded. > > > > I'm attaching my resume to this email. I also have an open-source Rails > > project that you might be interested in evaluating as a code sample. > > It's a forum, and I have plans to expand it well beyond that with a > > shared events calendar and mobile messaging a-la Twitter. The source can > > be found here: > > > > http://code.google.com/p/eldorado/source > > > > I look forward to hearing from you! > > - Trevor > > > > On 5/24/07, Mike Lipinski wrote: > > > > > > > > > Was hoping to network with everyone in the Chicago Ruby User Group in > > > regards to a contract opportunity. > > > > > > Our client is the world's foremost provider of traffic counting > > > information, technology and decision support software for businesses > > > in the retail, gaming, hospitality and entertainment industries. > > > > > > Our Client is a privately held company that is headquartered in > > > Chicago, Illinois. We maintain seven satellite offices across the > > > United States, Asia, Australia, Europe and South America. > > > > > > They are currently looking for a Ruby on Rails developer for at least > > > a 4 month contract engagement, this project could potentially be > > > extended long-term as some of our current consultants have already > > been extended. > > > Ideally targeting a Developer with experience specifically with Ruby > > > on Rails in a Unix environment. If candidate has relational database > > > experience with Oracle that would be a huge plus. Other scripting > > > languages such as Perl or Python would be a plus as well. > > > > > > If you or anyone you would recommend would be interested please feel > > > free to either call or email me directly. Please feel free to foward > > > my contact information along as well. > > > > > > Thanks, > > > > > > > > > Michael Lipinski > > > Senior Recruiter > > > Nuevista > > > 630-472-6838 x.104 > > > 630-472-0512 Direct > > > 630-200-9563 Cell > > > mikelipinski at nuevista.com > > > www.nuevista.com > > > > > > > > > _______________________________________________ > > > ChicagoGroup-Members-List at rubyforge.org > > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > -- ------------------------------ Apple MacBook. Black. It's the new White! ------------------------------ Peter Fitzgibbons -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070524/eade6905/attachment.html From fritza at manoverboard.org Thu May 24 16:39:38 2007 From: fritza at manoverboard.org (Fritz Anderson) Date: Thu, 24 May 2007 15:39:38 -0500 Subject: [Chirb] Ruby on Rails Contract opportunity in Chicago In-Reply-To: <670a00380705241330o48ad0becn4f901a00b68f87cf@mail.gmail.com> References: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> <929F670DAADC4548A1BAF5A81BD08D09185D41@nuevista-svr1.NUEVISTA.HQ> <3096c19d0705241324n73d128ddwfd59b1a5c9c547a3@mail.gmail.com> <670a00380705241330o48ad0becn4f901a00b68f87cf@mail.gmail.com> Message-ID: <9E1A024B-505A-4140-A207-5FECA8FDBC01@manoverboard.org> On 24 May 2007, at 3:30 PM, Peter Fitzgibbons wrote: > On the other hand, I had to XYZ on my 1st day on the job once... so > I guess it goes to show. Sigh. Slow, fat, and right over the plate. It's rude _not_ to hit it... No, it doesn't go to show. Not going to show is the whole point of zipping up. ? F -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070524/966c0304/attachment-0001.html From dave at sus4.net Thu May 24 17:22:24 2007 From: dave at sus4.net (David Minor) Date: Thu, 24 May 2007 16:22:24 -0500 Subject: [Chirb] Ruby on Rails Contract opportunity in Chicago In-Reply-To: <670a00380705241330o48ad0becn4f901a00b68f87cf@mail.gmail.com> References: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> <929F670DAADC4548A1BAF5A81BD08D09185D41@nuevista-svr1.NUEVISTA.HQ> <3096c19d0705241324n73d128ddwfd59b1a5c9c547a3@mail.gmail.com> <670a00380705241330o48ad0becn4f901a00b68f87cf@mail.gmail.com> Message-ID: <2684FDE9-E9FE-430D-B904-DB44C45EC589@sus4.net> Peter, you need a sign on the wall just before the front door to remind yourself to check before going out. This seems to be a habit. or maybe you were just telling the new co-worker how happy you were to have him on the team! ;) dm On May 24, 2007, at 3:30 PM, Peter Fitzgibbons wrote: > XYZ. > > When my new co-worker (1st day on the job!) hit me with that one, > right after "HI I'm Tom", it took me a full 2 minutes to figure out > what he was saying. > > On the other hand, I had to XYZ on my 1st day on the job once... so > I guess it goes to show. > > Happy day guys. > > Peter Fitzgibbons > > On 5/24/07, Chris McAvoy wrote: Good luck > with your talk guys. > > I was trying to think of a nice way to let you guys know that you were > "on-the-air" so to speak, but I couldn't think of anything, so I just > decided to use this a comic jumping off point. > > It's like telling someone their fly is down. How can you do that > while still preserving their dignity? It's just too hard. > > Hey everyone, your flies are down. > > Chris > > On 5/24/07, Mike Lipinski wrote: > > Trevor, > > > > I just got your voicemail, please feel free to call me when it is > > convenient to talk. I am very interested in talking with you > about the > > opportunity as well as getting a better understanding of your > > background. > > > > Thanks, > > > > Michael Lipinski > > Senior Recruiter > > Nuevista > > 630-472-6838 x.104 > > 630-472-0512 Direct > > 630-200-9563 Cell > > mikelipinski at nuevista.com > > www.nuevista.com > > > > > > -----Original Message----- > > From: chicagogroup-members-list-bounces at rubyforge.org > > [mailto: chicagogroup-members-list-bounces at rubyforge.org] On > Behalf Of > > Trevor Turk > > Sent: Thursday, May 24, 2007 2:50 PM > > To: Chirb discussion list > > Subject: Re: [Chirb] Ruby on Rails Contract opportunity in Chicago > > > > Hello, > > > > I'd be interested in hearing more about this position. I'm a mid- > level > > Ruby/Rails programmer who graduated with a Philosophy degree from a > > liberal arts college - so I consider myself to be quite well > rounded. > > > > I'm attaching my resume to this email. I also have an open-source > Rails > > project that you might be interested in evaluating as a code sample. > > It's a forum, and I have plans to expand it well beyond that with a > > shared events calendar and mobile messaging a-la Twitter. The > source can > > be found here: > > > > http://code.google.com/p/eldorado/source > > > > I look forward to hearing from you! > > - Trevor > > > > On 5/24/07, Mike Lipinski wrote: > > > > > > > > > Was hoping to network with everyone in the Chicago Ruby User > Group in > > > regards to a contract opportunity. > > > > > > Our client is the world's foremost provider of traffic counting > > > information, technology and decision support software for > businesses > > > in the retail, gaming, hospitality and entertainment industries. > > > > > > Our Client is a privately held company that is headquartered in > > > Chicago, Illinois. We maintain seven satellite offices across the > > > United States, Asia, Australia, Europe and South America. > > > > > > They are currently looking for a Ruby on Rails developer for at > least > > > a 4 month contract engagement, this project could potentially be > > > extended long-term as some of our current consultants have already > > been extended. > > > Ideally targeting a Developer with experience specifically with > Ruby > > > on Rails in a Unix environment. If candidate has relational > database > > > experience with Oracle that would be a huge plus. Other scripting > > > languages such as Perl or Python would be a plus as well. > > > > > > If you or anyone you would recommend would be interested please > feel > > > free to either call or email me directly. Please feel free to > foward > > > my contact information along as well. > > > > > > Thanks, > > > > > > > > > Michael Lipinski > > > Senior Recruiter > > > Nuevista > > > 630-472-6838 x.104 > > > 630-472-0512 Direct > > > 630-200-9563 Cell > > > mikelipinski at nuevista.com > > > www.nuevista.com > > > > > > > > > _______________________________________________ > > > ChicagoGroup-Members-List at rubyforge.org > > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > -- > ------------------------------ > Apple MacBook. Black. It's the new White! > ------------------------------ > Peter Fitzgibbons > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list From peter.fitzgibbons at gmail.com Thu May 24 17:43:56 2007 From: peter.fitzgibbons at gmail.com (Peter Fitzgibbons) Date: Thu, 24 May 2007 16:43:56 -0500 Subject: [Chirb] Ruby on Rails Contract opportunity in Chicago In-Reply-To: <2684FDE9-E9FE-430D-B904-DB44C45EC589@sus4.net> References: <929F670DAADC4548A1BAF5A81BD08D09185D20@nuevista-svr1.NUEVISTA.HQ> <929F670DAADC4548A1BAF5A81BD08D09185D41@nuevista-svr1.NUEVISTA.HQ> <3096c19d0705241324n73d128ddwfd59b1a5c9c547a3@mail.gmail.com> <670a00380705241330o48ad0becn4f901a00b68f87cf@mail.gmail.com> <2684FDE9-E9FE-430D-B904-DB44C45EC589@sus4.net> Message-ID: <670a00380705241443m25c4d1b6ucc525ec51314cda4@mail.gmail.com> Only happened one time. I'll put this on my habit-calendar to repeat for 30 days. On 5/24/07, David Minor wrote: > > Peter, you need a sign on the wall just before the front door to > remind yourself to check before going out. This seems to be a habit. > > or maybe you were just telling the new co-worker how happy you were > to have him on the team! ;) > > dm > > On May 24, 2007, at 3:30 PM, Peter Fitzgibbons wrote: > > > XYZ. > > > > When my new co-worker (1st day on the job!) hit me with that one, > > right after "HI I'm Tom", it took me a full 2 minutes to figure out > > what he was saying. > > > > On the other hand, I had to XYZ on my 1st day on the job once... so > > I guess it goes to show. > > > > Happy day guys. > > > > Peter Fitzgibbons > > > > On 5/24/07, Chris McAvoy wrote: Good luck > > with your talk guys. > > > > I was trying to think of a nice way to let you guys know that you were > > "on-the-air" so to speak, but I couldn't think of anything, so I just > > decided to use this a comic jumping off point. > > > > It's like telling someone their fly is down. How can you do that > > while still preserving their dignity? It's just too hard. > > > > Hey everyone, your flies are down. > > > > Chris > > > > On 5/24/07, Mike Lipinski wrote: > > > Trevor, > > > > > > I just got your voicemail, please feel free to call me when it is > > > convenient to talk. I am very interested in talking with you > > about the > > > opportunity as well as getting a better understanding of your > > > background. > > > > > > Thanks, > > > > > > Michael Lipinski > > > Senior Recruiter > > > Nuevista > > > 630-472-6838 x.104 > > > 630-472-0512 Direct > > > 630-200-9563 Cell > > > mikelipinski at nuevista.com > > > www.nuevista.com > > > > > > > > > -----Original Message----- > > > From: chicagogroup-members-list-bounces at rubyforge.org > > > [mailto: chicagogroup-members-list-bounces at rubyforge.org] On > > Behalf Of > > > Trevor Turk > > > Sent: Thursday, May 24, 2007 2:50 PM > > > To: Chirb discussion list > > > Subject: Re: [Chirb] Ruby on Rails Contract opportunity in Chicago > > > > > > Hello, > > > > > > I'd be interested in hearing more about this position. I'm a mid- > > level > > > Ruby/Rails programmer who graduated with a Philosophy degree from a > > > liberal arts college - so I consider myself to be quite well > > rounded. > > > > > > I'm attaching my resume to this email. I also have an open-source > > Rails > > > project that you might be interested in evaluating as a code sample. > > > It's a forum, and I have plans to expand it well beyond that with a > > > shared events calendar and mobile messaging a-la Twitter. The > > source can > > > be found here: > > > > > > http://code.google.com/p/eldorado/source > > > > > > I look forward to hearing from you! > > > - Trevor > > > > > > On 5/24/07, Mike Lipinski wrote: > > > > > > > > > > > > Was hoping to network with everyone in the Chicago Ruby User > > Group in > > > > regards to a contract opportunity. > > > > > > > > Our client is the world's foremost provider of traffic counting > > > > information, technology and decision support software for > > businesses > > > > in the retail, gaming, hospitality and entertainment industries. > > > > > > > > Our Client is a privately held company that is headquartered in > > > > Chicago, Illinois. We maintain seven satellite offices across the > > > > United States, Asia, Australia, Europe and South America. > > > > > > > > They are currently looking for a Ruby on Rails developer for at > > least > > > > a 4 month contract engagement, this project could potentially be > > > > extended long-term as some of our current consultants have already > > > been extended. > > > > Ideally targeting a Developer with experience specifically with > > Ruby > > > > on Rails in a Unix environment. If candidate has relational > > database > > > > experience with Oracle that would be a huge plus. Other scripting > > > > languages such as Perl or Python would be a plus as well. > > > > > > > > If you or anyone you would recommend would be interested please > > feel > > > > free to either call or email me directly. Please feel free to > > foward > > > > my contact information along as well. > > > > > > > > Thanks, > > > > > > > > > > > > Michael Lipinski > > > > Senior Recruiter > > > > Nuevista > > > > 630-472-6838 x.104 > > > > 630-472-0512 Direct > > > > 630-200-9563 Cell > > > > mikelipinski at nuevista.com > > > > www.nuevista.com > > > > > > > > > > > > _______________________________________________ > > > > ChicagoGroup-Members-List at rubyforge.org > > > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > > > _______________________________________________ > > > ChicagoGroup-Members-List at rubyforge.org > > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > > > > -- > > ------------------------------ > > Apple MacBook. Black. It's the new White! > > ------------------------------ > > Peter Fitzgibbons > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > -- ------------------------------ Apple MacBook. Black. It's the new White! ------------------------------ Peter Fitzgibbons -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070524/8760ee81/attachment.html From jcroneme at thoughtworks.com Mon May 28 17:50:41 2007 From: jcroneme at thoughtworks.com (Josh Cronemeyer) Date: Mon, 28 May 2007 16:50:41 -0500 Subject: [Chirb] time to rsvp for the mystery meeting! W00t Message-ID: Ok, nobody signed up for the talk and we are a week away from the next CHIRB. Soooo, unless anyone objects I think we should have another "lightning talk / code pit" session like the one last december. If you can prepare something that you can get through in 10 minutes or so, please do. Alternatively you can put out a request for a talk on a certain topic and perhaps that will inspire somebody. I'm mulling over a topic just to force myself to learn something new (Why's camping framework). But I make no promises :) Let's have fun with this and take advantage of the chance for all of us to talk. No pressure!!!! http://chirb.org/event/show/18 Josh Cronemeyer -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070528/4950efd6/attachment.html From evanfarrar at gmail.com Mon May 28 18:50:40 2007 From: evanfarrar at gmail.com (Evan Farrar) Date: Mon, 28 May 2007 17:50:40 -0500 Subject: [Chirb] time to rsvp for the mystery meeting! W00t In-Reply-To: References: Message-ID: Woohoo Lightning talks! I will definitely come with something. I also would like to call together a uger hacksession if Peter Chang is around for the meeting. On 5/28/07, Josh Cronemeyer wrote: > > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. If you can > prepare something that you can get through in 10 minutes or so, please do. > Alternatively you can put out a request for a talk on a certain topic and > perhaps that will inspire somebody. I'm mulling over a topic just to force > myself to learn something new (Why's camping framework). But I make no > promises :) Let's have fun with this and take advantage of the chance for > all of us to talk. No pressure!!!! > > http://chirb.org/event/show/18 > > Josh Cronemeyer > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > From trevorturk at yahoo.com Mon May 28 20:47:53 2007 From: trevorturk at yahoo.com (Trevor Turk) Date: Mon, 28 May 2007 19:47:53 -0500 Subject: [Chirb] time to rsvp for the mystery meeting! W00t In-Reply-To: References: Message-ID: I'd love to have some input about the forum app I've been working on. I could certainly talk about it, but I don't think I'm doing anything particularly interesting that would be worth a presentation. Things in my code that could use re-factoring might make for good topics of discussion, though. For example I was thinking of moving some of my finders into the model instead of the controller, etc. There are also areas of this app that haven't been written, like dealing with timezones and pagination. Perhaps some knowledgeable people would like to speak about (or help me out with) stuff like this, and other people might be able to benefit from learning more as well? In any case, the source is up here: http://code.google.com/p/eldorado/source Check out the readme - I made a rake task that sets up the app, and another that imports from an existing PHP forum called PunBB if you're into that sort of thing. Thanks, - Trevor On 5/28/07, Josh Cronemeyer wrote: > > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. If you can > prepare something that you can get through in 10 minutes or so, please do. From brendan.baldwin at gmail.com Mon May 28 23:03:05 2007 From: brendan.baldwin at gmail.com (Brendan Baldwin) Date: Mon, 28 May 2007 22:03:05 -0500 Subject: [Chirb] time to rsvp for the mystery meeting! W00t In-Reply-To: References: Message-ID: <7e757dc00705282003n91c5bf8we04da8ee36af6a83@mail.gmail.com> I'm so there. And I will be thrilled to lightning-present some recently discovered goodness. Who wants some eigenclass for dessert? --Brendan On 5/28/07, Josh Cronemeyer wrote: > > > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. If you can > prepare something that you can get through in 10 minutes or so, please do. > Alternatively you can put out a request for a talk on a certain topic and > perhaps that will inspire somebody. I'm mulling over a topic just to force > myself to learn something new (Why's camping framework). But I make no > promises :) Let's have fun with this and take advantage of the chance for > all of us to talk. No pressure!!!! > > http://chirb.org/event/show/18 > > Josh Cronemeyer > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070528/0b38d815/attachment.html From peter at oaktop.com Tue May 29 01:28:52 2007 From: peter at oaktop.com (Peter K Chan) Date: Tue, 29 May 2007 01:28:52 -0400 Subject: [Chirb] time to rsvp for the mystery meeting! W00t In-Reply-To: References: Message-ID: Sure! I will be up for some Uger-hacking/feedback-taking (I also need to apply Colin's patch from a while ago and push it out). Hmm...maybe I should think of a lightning talk on JRuby or something. Peter -----Original Message----- From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Evan Farrar Sent: Monday, May 28, 2007 5:51 PM To: Chirb discussion list Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t Woohoo Lightning talks! I will definitely come with something. I also would like to call together a uger hacksession if Peter Chang is around for the meeting. On 5/28/07, Josh Cronemeyer wrote: > > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. If you can > prepare something that you can get through in 10 minutes or so, please do. > Alternatively you can put out a request for a talk on a certain topic and > perhaps that will inspire somebody. I'm mulling over a topic just to force > myself to learn something new (Why's camping framework). But I make no > promises :) Let's have fun with this and take advantage of the chance for > all of us to talk. No pressure!!!! > > http://chirb.org/event/show/18 > > Josh Cronemeyer > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list From natebkirby at yahoo.com Tue May 29 03:22:49 2007 From: natebkirby at yahoo.com (Nate Kirby) Date: Tue, 29 May 2007 15:22:49 +0800 Subject: [Chirb] time to rsvp for the mystery meeting! W00t In-Reply-To: References: Message-ID: <465BD4C9.3000609@yahoo.com> Peter, JRuby is slow. Try RJB (http://rjb.rubyforge.org/) Nate Peter K Chan wrote: > Sure! I will be up for some Uger-hacking/feedback-taking (I also need to > apply Colin's patch from a while ago and push it out). > > Hmm...maybe I should think of a lightning talk on JRuby or something. > > Peter > > -----Original Message----- > From: chicagogroup-members-list-bounces at rubyforge.org > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > Evan Farrar > Sent: Monday, May 28, 2007 5:51 PM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Woohoo Lightning talks! I will definitely come with something. I also > would like to call together a uger hacksession if Peter Chang is > around for the meeting. > > On 5/28/07, Josh Cronemeyer wrote: > >> Ok, nobody signed up for the talk and we are a week away from the next >> CHIRB. Soooo, unless anyone objects I think we should have another >> "lightning talk / code pit" session like the one last december. If >> > you can > >> prepare something that you can get through in 10 minutes or so, please >> > do. > >> Alternatively you can put out a request for a talk on a certain topic >> > and > >> perhaps that will inspire somebody. I'm mulling over a topic just to >> > force > >> myself to learn something new (Why's camping framework). But I make >> > no > >> promises :) Let's have fun with this and take advantage of the chance >> > for > >> all of us to talk. No pressure!!!! >> >> http://chirb.org/event/show/18 >> >> Josh Cronemeyer >> _______________________________________________ >> ChicagoGroup-Members-List at rubyforge.org >> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list >> >> > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070529/d389e653/attachment.html From peter at oaktop.com Tue May 29 04:50:48 2007 From: peter at oaktop.com (Peter K Chan) Date: Tue, 29 May 2007 04:50:48 -0400 Subject: [Chirb] time to rsvp for the mystery meeting! W00t In-Reply-To: <465BD4C9.3000609@yahoo.com> References: <465BD4C9.3000609@yahoo.com> Message-ID: Not anymore, Nate. :) JRuby WAS slow six months ago, but it has come a long way. Check this out: http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance.html Summary: In interpretive mode, JRuby is no more than 2x slower, and that's including JVM startup and lack of hotspot warm up. In unoptimized compiled mode, JRuby often beats C Ruby. I have been using JRuby in my project, and I haven't had any performance complaints since 2 months ago. Peter ________________________________________ From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby Sent: Tuesday, May 29, 2007 2:23 AM To: Chirb discussion list Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t Peter, JRuby is slow.? Try RJB (http://rjb.rubyforge.org/) Nate Peter K Chan wrote: Sure! I will be up for some Uger-hacking/feedback-taking (I also need to apply Colin's patch from a while ago and push it out). Hmm...maybe I should think of a lightning talk on JRuby or something. Peter -----Original Message----- From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Evan Farrar Sent: Monday, May 28, 2007 5:51 PM To: Chirb discussion list Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t Woohoo Lightning talks! I will definitely come with something. I also would like to call together a uger hacksession if Peter Chang is around for the meeting. On 5/28/07, Josh Cronemeyer wrote: Ok, nobody signed up for the talk and we are a week away from the next CHIRB. Soooo, unless anyone objects I think we should have another "lightning talk / code pit" session like the one last december. If you can prepare something that you can get through in 10 minutes or so, please do. Alternatively you can put out a request for a talk on a certain topic and perhaps that will inspire somebody. I'm mulling over a topic just to force myself to learn something new (Why's camping framework). But I make no promises :) Let's have fun with this and take advantage of the chance for all of us to talk. No pressure!!!! http://chirb.org/event/show/18 Josh Cronemeyer _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list From natebkirby at yahoo.com Tue May 29 05:20:56 2007 From: natebkirby at yahoo.com (Nate Kirby) Date: Tue, 29 May 2007 17:20:56 +0800 Subject: [Chirb] time to rsvp for the mystery meeting! W00t In-Reply-To: References: <465BD4C9.3000609@yahoo.com> Message-ID: <465BF078.8050808@yahoo.com> Peter, I can take your word for it....or I can check the performance stats we just did a few weeks ago JRuby was 10x slower than ruby at the command line on a Fedora box. Nate STATS [programmer at Mark ~]$ java --version java version "1.4.2" gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. I did not change the default JVM. I used the Ruby project concatenating wav files and profiler to see the performance data. This is the result: Ruby: % cumulative self self total time seconds seconds calls ms/call ms/call name 10.24 0.13 0.13 238 0.55 1.13 MonitorMixin.mon_exit 7.09 0.22 0.09 238 0.38 2.27 MonitorMixin.synchronize 6.30 0.30 0.08 238 0.34 3.57 Logger#add 5.51 0.37 0.07 238 0.29 0.34 Logger::Formatter#format_datetime 4.72 0.43 0.06 17 3.53 68.82 FileFormat::WavFile#getInfo 4.72 0.49 0.06 203 0.30 0.69 Integer#times 3.94 0.54 0.05 238 0.21 0.42 Logger::LogDevice#check_shift_log 3.15 0.58 0.04 238 0.17 0.25 MonitorMixin.mon_release 3.15 0.62 0.04 238 0.17 0.34 MonitorMixin.mon_enter 2.36 0.65 0.03 256 0.12 0.12 String#+ 2.36 0.68 0.03 87 0.34 0.57 FileFormat::WavFile#dataPos 2.36 0.71 0.03 177 0.17 0.85 FileFormat::WavFile#readBigNum 2.36 0.74 0.03 530 0.06 0.06 IO#getc 2.36 0.77 0.03 8 3.75 155.00 Array#each 2.36 0.80 0.03 476 0.06 0.06 Thread#current 2.36 0.83 0.03 238 0.13 0.13 Logger#format_severity 2.36 0.86 0.03 238 0.13 0.21 MonitorMixin.mon_check_owner 2.36 0.89 0.03 952 0.03 0.03 Thread#critical= 2.36 0.92 0.03 238 0.13 0.55 Logger::Formatter#call 1.57 0.94 0.02 476 0.04 0.04 Array#shift 1.57 0.96 0.02 1060 0.02 0.02 Fixnum#* 1.57 0.98 0.02 238 0.08 0.08 Module#=== 1.57 1.00 0.02 238 0.08 0.08 IO#stat 1.57 1.02 0.02 87 0.23 0.23 IO#readline 1.57 1.04 0.02 476 0.04 0.04 Fixnum#> 1.57 1.06 0.02 965 0.02 0.02 Fixnum#+ 0.79 1.07 0.01 17 0.59 2.94 FileFormat::WavFile#extraParams 0.79 1.08 0.01 238 0.04 0.04 Kernel.nil? 0.79 1.09 0.01 240 0.04 0.04 Time#initialize 0.79 1.10 0.01 44 0.23 0.23 IO#putc 0.79 1.11 0.01 34 0.29 0.29 FileFormat::WavFile#fileSize 0.79 1.12 0.01 238 0.04 0.59 Logger#format_message 0.79 1.13 0.01 34 0.29 0.29 IO#read 0.79 1.14 0.01 17 0.59 0.59 FileFormat::WavFile#readBytes 0.79 1.15 0.01 238 0.04 0.04 Time#usec 0.79 1.16 0.01 238 0.04 0.04 Kernel.block_given? 0.79 1.17 0.01 238 0.04 2.31 Logger::LogDevice#write 0.79 1.18 0.01 18 0.56 0.56 FileFormat::WavFile#bitPerSample 0.79 1.19 0.01 34 0.29 1.47 FileFormat::WavFile#subChunk2Size 0.79 1.20 0.01 238 0.04 0.13 MonitorMixin.mon_acquire 0.79 1.21 0.01 238 0.04 0.04 Fixnum#< 0.79 1.22 0.01 238 0.04 3.61 Logger#info 0.79 1.23 0.01 18 0.56 1.67 FileFormat::WavFile#sampleRate 0.79 1.24 0.01 325 0.03 0.03 Kernel.== 0.79 1.25 0.01 238 0.04 0.04 File::Stat#size 0.79 1.26 0.01 240 0.04 0.08 Time#now 0.79 1.27 0.01 344 0.03 0.03 Fixnum#== 0.00 1.27 0.00 2 0.00 0.00 IO#sync= 0.00 1.27 0.00 18 0.00 0.56 FileFormat::WavFile#byteRate 0.00 1.27 0.00 18 0.00 0.00 Class#new 0.00 1.27 0.00 17 0.00 0.00 Array#to_s 0.00 1.27 0.00 1 0.00 0.00 FileFormat::FileConcat#initialize 0.00 1.27 0.00 18 0.00 0.00 IO#to_io 0.00 1.27 0.00 35 0.00 0.00 FileFormat::WavFile#audioFormat 0.00 1.27 0.00 238 0.00 0.08 Logger::Formatter#msg2str 0.00 1.27 0.00 238 0.00 0.00 String#[] 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#openFile 0.00 1.27 0.00 28 0.00 0.00 Fixnum#<< 0.00 1.27 0.00 56 0.00 0.00 Fixnum#>> 0.00 1.27 0.00 2 0.00 0.00 Logger::LogDevice#create_logfile 0.00 1.27 0.00 298 0.00 0.00 IO#pos= 0.00 1.27 0.00 17 0.00 0.00 File#exist? 0.00 1.27 0.00 238 0.00 0.00 Thread#pass 0.00 1.27 0.00 238 0.00 0.00 NilClass#to_s 0.00 1.27 0.00 17 0.00 0.00 Array#<< 0.00 1.27 0.00 51 0.00 0.00 IO#eof? 0.00 1.27 0.00 9 0.00 2.22 FileFormat::FileConcat#writeData 0.00 1.27 0.00 2 0.00 0.00 Time#to_s 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#exist? 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#chunkSize 0.00 1.27 0.00 238 0.00 0.00 Kernel.respond_to? 0.00 1.27 0.00 1 0.00 0.00 IO#new 0.00 1.27 0.00 238 0.00 0.00 Time#strftime 0.00 1.27 0.00 4 0.00 0.00 Fixnum#| 0.00 1.27 0.00 18 0.00 0.56 FileFormat::WavFile#blockAlign 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#extraParamSize 0.00 1.27 0.00 6 0.00 0.00 FileTest.exist? 0.00 1.27 0.00 17 0.00 0.00 IO#open 0.00 1.27 0.00 355 0.00 0.00 Fixnum#- 0.00 1.27 0.00 239 0.00 0.00 Array#[] 0.00 1.27 0.00 18 0.00 1.67 FileFormat::WavFile#numChannels 0.00 1.27 0.00 1 0.00 0.00 Array#size 0.00 1.27 0.00 20 0.00 0.00 IO#close 0.00 1.27 0.00 8 0.00 0.00 File#rename 0.00 1.27 0.00 87 0.00 0.00 String#index 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#initialize 0.00 1.27 0.00 1 0.00 90.00 FileFormat::FileConcat#concatFiles 0.00 1.27 0.00 2 0.00 0.00 Kernel.open 0.00 1.27 0.00 2 0.00 0.00 Integer#downto 0.00 1.27 0.00 4 0.00 0.00 FileFormat::FileConcat#writeBytes 0.00 1.27 0.00 1 0.00 30.00 FileFormat::FileConcat#concat_data_block 0.00 1.27 0.00 476 0.00 0.00 NilClass#nil? 0.00 1.27 0.00 20 0.00 0.00 File#initialize 0.00 1.27 0.00 478 0.00 0.00 String#% 0.00 1.27 0.00 2 0.00 0.00 Logger::LogDevice#add_log_header 0.00 1.27 0.00 18 0.00 2.78 FileFormat::WavFile#subChunk1Size 0.00 1.27 0.00 2 0.00 0.00 Logger::LogDevice#shift_log_age 0.00 1.27 0.00 318 0.00 0.00 IO#write 0.00 1.27 0.00 238 0.00 0.00 String#<< 0.00 1.27 0.00 238 0.00 0.00 Kernel.is_a? 0.00 1.27 0.00 222 0.00 0.00 Fixnum#to_s 0.00 1.27 0.00 34 0.00 0.00 File#size 0.00 1.27 0.00 1 0.00 1270.00 #toplevel JRuby: % cumulative self self total time seconds seconds calls ms/call ms/call name 10.27 1.25 1.25 203 6.17 7.84 Integer#times 9.64 2.43 1.17 238 4.94 36.55 Logger#add 6.57 3.23 0.80 238 3.37 5.86 MonitorMixin.mon_exit 5.23 3.86 0.64 238 2.68 4.19 Logger::Formatter#format_datetime 4.92 4.46 0.60 238 2.52 19.33 MonitorMixin.mon_synchronize 4.37 5.00 0.53 274 1.95 1.95 IO#write 4.12 5.50 0.50 238 2.11 5.62 Logger::LogDevice#check_shift_log 3.36 5.91 0.41 238 1.72 3.01 MonitorMixin.mon_enter 3.23 6.30 0.39 497 0.79 1.52 Class#new 3.08 6.68 0.38 238 1.58 1.65 Logger::Formatter#msg2str 2.33 6.96 0.28 238 1.19 1.62 Logger#format_severity 2.33 7.24 0.28 238 1.19 37.75 Logger#info 2.21 7.51 0.27 238 1.13 7.65 Logger::Formatter#call 2.18 7.78 0.27 238 1.12 1.12 File::Stat#initialize 2.08 8.03 0.25 17 14.94 658.12 FileFormat::WavFile#getInfo 1.71 8.24 0.21 238 0.88 1.00 MonitorMixin.mon_acquire 1.70 8.45 0.21 87 2.38 4.87 FileFormat::WavFile#dataPos 1.62 8.65 0.20 177 1.12 10.50 FileFormat::WavFile#readBigNum 1.51 8.83 0.18 478 0.38 0.55 String#% 1.44 9.01 0.18 238 0.74 8.39 Logger#format_message 1.40 9.18 0.17 476 0.36 0.36 NilClass#nil? 1.37 9.35 0.17 238 0.70 1.08 MonitorMixin.mon_release 1.32 9.51 0.16 238 0.68 0.68 Time#strftime 1.31 9.67 0.16 298 0.54 0.54 IO#pos= 1.23 9.82 0.15 915 0.16 0.16 FileFormat::WavFile#file 1.19 9.96 0.15 238 0.61 19.94 Logger::LogDevice#write 1.10 10.10 0.13 952 0.14 0.14 ##critical= 1.00 10.22 0.12 238 0.51 0.80 MonitorMixin.mon_check_owner 0.91 10.33 0.11 530 0.21 0.21 IO#getc 0.85 10.43 0.10 238 0.43 0.43 Kernel.is_a? 0.85 10.54 0.10 1060 0.10 0.10 Fixnum#* 0.83 10.64 0.10 239 0.42 0.42 Array#[] 0.81 10.74 0.10 476 0.21 0.21 Fixnum#> 0.75 10.83 0.09 476 0.19 0.19 Array#shift 0.72 10.91 0.09 965 0.09 0.09 Fixnum#+ 0.71 11.00 0.09 8 10.75 1494.63 Array#each 0.71 11.09 0.09 34 2.53 2.53 IO#read 0.66 11.17 0.08 238 0.34 2.50 File#stat 0.66 11.25 0.08 238 0.34 0.34 Time#usec 0.64 11.33 0.08 238 0.33 0.33 NilClass#to_s 0.62 11.40 0.08 238 0.32 0.32 Kernel.respond_to? 0.61 11.47 0.07 35 2.11 11.74 FileFormat::WavFile#audioFormat 0.57 11.54 0.07 344 0.20 0.21 Fixnum#== 0.51 11.61 0.06 476 0.13 0.13 ##current 0.40 11.65 0.05 238 0.21 0.21 Fixnum#< 0.33 11.69 0.04 325 0.12 0.12 Kernel.== 0.32 11.73 0.04 17 2.29 5.71 FileFormat::WavFile#exist? 0.25 11.76 0.03 1 31.00 31.00 File#initialize 0.25 11.79 0.03 222 0.14 0.14 Fixnum#to_s 0.24 11.82 0.03 85 0.34 0.34 FileFormat::WavFile#fileDir 0.21 11.85 0.02 238 0.11 0.11 Kernel.block_given? 0.20 11.87 0.02 240 0.10 0.10 Time#initialize 0.19 11.90 0.02 17 1.35 1.71 FileFormat::WavFile#readBytes 0.19 11.92 0.02 238 0.10 0.10 ##pass 0.17 11.94 0.02 17 1.24 16.71 FileFormat::WavFile#extraParamSize 0.15 11.96 0.02 17 1.06 1.94 FileFormat::WavFile#openFile 0.15 11.98 0.02 238 0.08 0.08 Module#=== 0.14 11.99 0.02 355 0.05 0.05 Fixnum#- 0.13 12.01 0.02 34 0.47 23.35 FileFormat::WavFile#subChunk2Size 0.13 12.02 0.02 87 0.18 0.18 IO#readline 0.10 12.04 0.01 18 0.67 16.67 FileFormat::WavFile#bitPerSample 0.10 12.05 0.01 238 0.05 0.05 File::Stat#size 0.09 12.06 0.01 238 0.05 0.05 Kernel.nil? 0.08 12.07 0.01 1 10.00 801.00 FileFormat::FileConcat#concatFiles 0.08 12.08 0.01 17 0.59 0.59 FileFormat::WavFile#initialize 0.07 12.09 0.01 17 0.53 0.53 ##open 0.07 12.10 0.01 34 0.26 0.38 FileFormat::WavFile#fileSize 0.07 12.11 0.01 18 0.44 5.67 FileFormat::WavFile#sampleRate 0.07 12.11 0.01 87 0.09 0.09 String#index 0.05 12.12 0.01 9 0.67 4.78 FileFormat::FileConcat#writeData 0.05 12.12 0.01 17 0.35 0.35 FileTest.exist? 0.04 12.13 0.01 2 2.50 8.00 Integer#downto 0.04 12.14 0.01 18 0.28 6.17 FileFormat::WavFile#subChunk1Size 0.04 12.14 0.01 18 0.28 4.67 FileFormat::WavFile#blockAlign 0.04 12.15 0.00 17 0.29 0.71 FileFormat::WavFile#chunkSize 0.04 12.15 0.00 18 0.28 12.22 FileFormat::WavFile#byteRate 0.03 12.15 0.00 34 0.12 0.12 FileTest.size 0.03 12.16 0.00 44 0.09 0.09 IO#putc 0.03 12.16 0.00 18 0.22 0.22 IO#to_io 0.02 12.17 0.00 17 0.18 5.82 FileFormat::WavFile#extraParams 0.02 12.17 0.00 2 1.50 3.50 Logger::LogDevice#create_logfile 0.02 12.17 0.00 20 0.15 0.15 IO#close 0.02 12.17 0.00 17 0.12 0.12 Array#<< 0.02 12.18 0.00 8 0.25 0.25 ##rename 0.02 12.18 0.00 28 0.07 0.07 Fixnum#<< 0.02 12.18 0.00 56 0.04 0.04 Fixnum#>> 0.02 12.18 0.00 18 0.11 8.94 FileFormat::WavFile#numChannels 0.02 12.18 0.00 51 0.04 0.04 IO#eof 0.01 12.18 0.00 2 0.50 2.00 Logger::LogDevice#add_log_header 0.01 12.18 0.00 2 0.50 0.50 Time#to_s 0.00 12.18 0.00 2 0.00 0.00 IO#sync= 0.00 12.18 0.00 2 0.00 12.50 Logger::LogDevice#shift_log_age 0.00 12.18 0.00 6 0.00 0.00 ##exist? 0.00 12.18 0.00 1 0.00 0.00 Array#length 0.00 12.18 0.00 2 0.00 0.00 Kernel.open 0.00 12.18 0.00 1 0.00 31.00 FileFormat::FileConcat#initialize 0.00 12.18 0.00 17 0.00 0.00 Array#to_s 0.00 12.18 0.00 1 0.00 209.00 FileFormat::FileConcat#concat_data_block 0.00 12.18 0.00 4 0.00 0.00 Fixnum#| 0.00 12.18 0.00 4 0.00 1.00 FileFormat::FileConcat#writeBytes 0.00 12.19 0.00 1 0.00 12187.00 #toplevel This performance of JRuby is rather bad. Reasons may come from: 1. JRuby is in nature very slow. We can not do anything to this 2. JRuby's startup time is longer than that of Ruby. I wonder this situation would be improved if we have had on in-memory JVM Peter K Chan wrote: > Not anymore, Nate. :) > > JRuby WAS slow six months ago, but it has come a long way. Check this out: > > http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance.html > > Summary: In interpretive mode, JRuby is no more than 2x slower, and that's including JVM startup and lack of hotspot warm up. In unoptimized compiled mode, JRuby often beats C Ruby. I have been using JRuby in my project, and I haven't had any performance complaints since 2 months ago. > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > Sent: Tuesday, May 29, 2007 2:23 AM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Peter, > > JRuby is slow. Try RJB (http://rjb.rubyforge.org/) > > Nate > > Peter K Chan wrote: > Sure! I will be up for some Uger-hacking/feedback-taking (I also need to > apply Colin's patch from a while ago and push it out). > > Hmm...maybe I should think of a lightning talk on JRuby or something. > > Peter > > -----Original Message----- > From: chicagogroup-members-list-bounces at rubyforge.org > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > Evan Farrar > Sent: Monday, May 28, 2007 5:51 PM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Woohoo Lightning talks! I will definitely come with something. I also > would like to call together a uger hacksession if Peter Chang is > around for the meeting. > > On 5/28/07, Josh Cronemeyer wrote: > > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. If > > you can > > prepare something that you can get through in 10 minutes or so, please > > do. > > Alternatively you can put out a request for a talk on a certain topic > > and > > perhaps that will inspire somebody. I'm mulling over a topic just to > > force > > myself to learn something new (Why's camping framework). But I make > > no > > promises :) Let's have fun with this and take advantage of the chance > > for > > all of us to talk. No pressure!!!! > > http://chirb.org/event/show/18 > > Josh Cronemeyer > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070529/aac20e58/attachment-0001.html From jcroneme at thoughtworks.com Tue May 29 12:10:55 2007 From: jcroneme at thoughtworks.com (Josh Cronemeyer) Date: Tue, 29 May 2007 11:10:55 -0500 Subject: [Chirb] JRuby performance In-Reply-To: <465BF078.8050808@yahoo.com> Message-ID: discussion moved from this thread: Re: [Chirb] time to rsvp for the mystery meeting! W00t Nate, I've heard alot of good stuff about jruby performance, not from just peter. > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) I think you should run your tests with a real JVM (like sun's implementation). You are using gij which is a java interpretor. GIJ is a part of the GCJ project. GCJ is a very different beast than sun's implementation. The idea behind GCJ is that java is compiled down to your specific platform's machine code. So they bypass the jvm all together. This sounds like it would be faster, but it really isn't for many things because sun's just in time compilation can actually compile the same code in different ways depending on context in order to optimize execution. I'm not sure if Jruby uses runtime code loading or generation (i wouldn't be surprised though). If that is the case GCJ is SUPER slow for those types of operations because that is when the gij interpreter kicks in. The interpreter is realizing no benefits from optimization or compilation. The short of it: I wouldn't call my tests definitive until I was using sun's jvm. Josh Cronemeyer chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 04:20:56 AM: > Peter, > > I can take your word for it....or I can check the performance stats we > just did a few weeks ago JRuby was 10x slower than ruby at the command > line on a Fedora box. > > Nate > > STATS > > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > > Copyright (C) 2006 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > I did not change the default JVM. I used the Ruby project > concatenating wav files and profiler to see the performance data. This > is the result: > Ruby: > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 10.24 0.13 0.13 238 0.55 1.13 MonitorMixin.mon_exit > 7.09 0.22 0.09 238 0.38 2.27 MonitorMixin.synchronize > 6.30 0.30 0.08 238 0.34 3.57 Logger#add > 5.51 0.37 0.07 238 0.29 0.34 Logger:: > Formatter#format_datetime > 4.72 0.43 0.06 17 3.53 68.82 FileFormat:: > WavFile#getInfo > 4.72 0.49 0.06 203 0.30 0.69 Integer#times > 3.94 0.54 0.05 238 0.21 0.42 Logger:: > LogDevice#check_shift_log > 3.15 0.58 0.04 238 0.17 0.25 MonitorMixin.mon_release > 3.15 0.62 0.04 238 0.17 0.34 MonitorMixin.mon_enter > 2.36 0.65 0.03 256 0.12 0.12 String#+ > 2.36 0.68 0.03 87 0.34 0.57 FileFormat:: > WavFile#dataPos > 2.36 0.71 0.03 177 0.17 0.85 FileFormat:: > WavFile#readBigNum > 2.36 0.74 0.03 530 0.06 0.06 IO#getc > 2.36 0.77 0.03 8 3.75 155.00 Array#each > 2.36 0.80 0.03 476 0.06 0.06 Thread#current > 2.36 0.83 0.03 238 0.13 0.13 Logger#format_severity > 2.36 0.86 0.03 238 0.13 0.21 MonitorMixin. > mon_check_owner > 2.36 0.89 0.03 952 0.03 0.03 Thread#critical= > 2.36 0.92 0.03 238 0.13 0.55 Logger::Formatter#call > 1.57 0.94 0.02 476 0.04 0.04 Array#shift > 1.57 0.96 0.02 1060 0.02 0.02 Fixnum#* > 1.57 0.98 0.02 238 0.08 0.08 Module#=== > 1.57 1.00 0.02 238 0.08 0.08 IO#stat > 1.57 1.02 0.02 87 0.23 0.23 IO#readline > 1.57 1.04 0.02 476 0.04 0.04 Fixnum#> > 1.57 1.06 0.02 965 0.02 0.02 Fixnum#+ > 0.79 1.07 0.01 17 0.59 2.94 FileFormat:: > WavFile#extraParams > 0.79 1.08 0.01 238 0.04 0.04 Kernel.nil? > 0.79 1.09 0.01 240 0.04 0.04 Time#initialize > 0.79 1.10 0.01 44 0.23 0.23 IO#putc > 0.79 1.11 0.01 34 0.29 0.29 FileFormat:: > WavFile#fileSize > 0.79 1.12 0.01 238 0.04 0.59 Logger#format_message > 0.79 1.13 0.01 34 0.29 0.29 IO#read > 0.79 1.14 0.01 17 0.59 0.59 FileFormat:: > WavFile#readBytes > 0.79 1.15 0.01 238 0.04 0.04 Time#usec > 0.79 1.16 0.01 238 0.04 0.04 Kernel.block_given? > 0.79 1.17 0.01 238 0.04 2.31 Logger::LogDevice#write > 0.79 1.18 0.01 18 0.56 0.56 FileFormat:: > WavFile#bitPerSample > 0.79 1.19 0.01 34 0.29 1.47 FileFormat:: > WavFile#subChunk2Size > 0.79 1.20 0.01 238 0.04 0.13 MonitorMixin.mon_acquire > 0.79 1.21 0.01 238 0.04 0.04 Fixnum#< > 0.79 1.22 0.01 238 0.04 3.61 Logger#info > 0.79 1.23 0.01 18 0.56 1.67 FileFormat:: > WavFile#sampleRate > 0.79 1.24 0.01 325 0.03 0.03 Kernel.== > 0.79 1.25 0.01 238 0.04 0.04 File::Stat#size > 0.79 1.26 0.01 240 0.04 0.08 Time#now > 0.79 1.27 0.01 344 0.03 0.03 Fixnum#== > 0.00 1.27 0.00 2 0.00 0.00 IO#sync= > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > WavFile#byteRate > 0.00 1.27 0.00 18 0.00 0.00 Class#new > 0.00 1.27 0.00 17 0.00 0.00 Array#to_s > 0.00 1.27 0.00 1 0.00 0.00 FileFormat:: > FileConcat#initialize > 0.00 1.27 0.00 18 0.00 0.00 IO#to_io > 0.00 1.27 0.00 35 0.00 0.00 FileFormat:: > WavFile#audioFormat > 0.00 1.27 0.00 238 0.00 0.08 Logger::Formatter#msg2str > 0.00 1.27 0.00 238 0.00 0.00 String#[] > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#openFile > 0.00 1.27 0.00 28 0.00 0.00 Fixnum#<< > 0.00 1.27 0.00 56 0.00 0.00 Fixnum#>> > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#create_logfile > 0.00 1.27 0.00 298 0.00 0.00 IO#pos= > 0.00 1.27 0.00 17 0.00 0.00 File#exist? > 0.00 1.27 0.00 238 0.00 0.00 Thread#pass > 0.00 1.27 0.00 238 0.00 0.00 NilClass#to_s > 0.00 1.27 0.00 17 0.00 0.00 Array#<< > 0.00 1.27 0.00 51 0.00 0.00 IO#eof? > 0.00 1.27 0.00 9 0.00 2.22 FileFormat:: > FileConcat#writeData > 0.00 1.27 0.00 2 0.00 0.00 Time#to_s > 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#exist? > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#chunkSize > 0.00 1.27 0.00 238 0.00 0.00 Kernel.respond_to? > 0.00 1.27 0.00 1 0.00 0.00 IO#new > 0.00 1.27 0.00 238 0.00 0.00 Time#strftime > 0.00 1.27 0.00 4 0.00 0.00 Fixnum#| > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > WavFile#blockAlign > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#extraParamSize > 0.00 1.27 0.00 6 0.00 0.00 FileTest.exist? > 0.00 1.27 0.00 17 0.00 0.00 IO#open > 0.00 1.27 0.00 355 0.00 0.00 Fixnum#- > 0.00 1.27 0.00 239 0.00 0.00 Array#[] > 0.00 1.27 0.00 18 0.00 1.67 FileFormat:: > WavFile#numChannels > 0.00 1.27 0.00 1 0.00 0.00 Array#size > 0.00 1.27 0.00 20 0.00 0.00 IO#close > 0.00 1.27 0.00 8 0.00 0.00 File#rename > 0.00 1.27 0.00 87 0.00 0.00 String#index > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#initialize > 0.00 1.27 0.00 1 0.00 90.00 FileFormat:: > FileConcat#concatFiles > 0.00 1.27 0.00 2 0.00 0.00 Kernel.open > 0.00 1.27 0.00 2 0.00 0.00 Integer#downto > 0.00 1.27 0.00 4 0.00 0.00 FileFormat:: > FileConcat#writeBytes > 0.00 1.27 0.00 1 0.00 30.00 FileFormat:: > FileConcat#concat_data_block > 0.00 1.27 0.00 476 0.00 0.00 NilClass#nil? > 0.00 1.27 0.00 20 0.00 0.00 File#initialize > 0.00 1.27 0.00 478 0.00 0.00 String#% > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#add_log_header > 0.00 1.27 0.00 18 0.00 2.78 FileFormat:: > WavFile#subChunk1Size > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#shift_log_age > 0.00 1.27 0.00 318 0.00 0.00 IO#write > 0.00 1.27 0.00 238 0.00 0.00 String#<< > 0.00 1.27 0.00 238 0.00 0.00 Kernel.is_a? > 0.00 1.27 0.00 222 0.00 0.00 Fixnum#to_s > 0.00 1.27 0.00 34 0.00 0.00 File#size > 0.00 1.27 0.00 1 0.00 1270.00 #toplevel > > JRuby: > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 10.27 1.25 1.25 203 6.17 7.84 Integer#times > 9.64 2.43 1.17 238 4.94 36.55 Logger#add > 6.57 3.23 0.80 238 3.37 5.86 MonitorMixin.mon_exit > 5.23 3.86 0.64 238 2.68 4.19 Logger:: > Formatter#format_datetime > 4.92 4.46 0.60 238 2.52 19.33 MonitorMixin. > mon_synchronize > 4.37 5.00 0.53 274 1.95 1.95 IO#write > 4.12 5.50 0.50 238 2.11 5.62 Logger:: > LogDevice#check_shift_log > 3.36 5.91 0.41 238 1.72 3.01 MonitorMixin.mon_enter > 3.23 6.30 0.39 497 0.79 1.52 Class#new > 3.08 6.68 0.38 238 1.58 1.65 Logger::Formatter#msg2str > 2.33 6.96 0.28 238 1.19 1.62 Logger#format_severity > 2.33 7.24 0.28 238 1.19 37.75 Logger#info > 2.21 7.51 0.27 238 1.13 7.65 Logger::Formatter#call > 2.18 7.78 0.27 238 1.12 1.12 File::Stat#initialize > 2.08 8.03 0.25 17 14.94 658.12 FileFormat:: > WavFile#getInfo > 1.71 8.24 0.21 238 0.88 1.00 MonitorMixin.mon_acquire > 1.70 8.45 0.21 87 2.38 4.87 FileFormat:: > WavFile#dataPos > 1.62 8.65 0.20 177 1.12 10.50 FileFormat:: > WavFile#readBigNum > 1.51 8.83 0.18 478 0.38 0.55 String#% > 1.44 9.01 0.18 238 0.74 8.39 Logger#format_message > 1.40 9.18 0.17 476 0.36 0.36 NilClass#nil? > 1.37 9.35 0.17 238 0.70 1.08 MonitorMixin.mon_release > 1.32 9.51 0.16 238 0.68 0.68 Time#strftime > 1.31 9.67 0.16 298 0.54 0.54 IO#pos= > 1.23 9.82 0.15 915 0.16 0.16 FileFormat::WavFile#file > 1.19 9.96 0.15 238 0.61 19.94 Logger::LogDevice#write > 1.10 10.10 0.13 952 0.14 0.14 ##critical= > 1.00 10.22 0.12 238 0.51 0.80 MonitorMixin. > mon_check_owner > 0.91 10.33 0.11 530 0.21 0.21 IO#getc > 0.85 10.43 0.10 238 0.43 0.43 Kernel.is_a? > 0.85 10.54 0.10 1060 0.10 0.10 Fixnum#* > 0.83 10.64 0.10 239 0.42 0.42 Array#[] > 0.81 10.74 0.10 476 0.21 0.21 Fixnum#> > 0.75 10.83 0.09 476 0.19 0.19 Array#shift > 0.72 10.91 0.09 965 0.09 0.09 Fixnum#+ > 0.71 11.00 0.09 8 10.75 1494.63 Array#each > 0.71 11.09 0.09 34 2.53 2.53 IO#read > 0.66 11.17 0.08 238 0.34 2.50 File#stat > 0.66 11.25 0.08 238 0.34 0.34 Time#usec > 0.64 11.33 0.08 238 0.33 0.33 NilClass#to_s > 0.62 11.40 0.08 238 0.32 0.32 Kernel.respond_to? > 0.61 11.47 0.07 35 2.11 11.74 FileFormat:: > WavFile#audioFormat > 0.57 11.54 0.07 344 0.20 0.21 Fixnum#== > 0.51 11.61 0.06 476 0.13 0.13 ##current > 0.40 11.65 0.05 238 0.21 0.21 Fixnum#< > 0.33 11.69 0.04 325 0.12 0.12 Kernel.== > 0.32 11.73 0.04 17 2.29 5.71 FileFormat::WavFile#exist? > 0.25 11.76 0.03 1 31.00 31.00 File#initialize > 0.25 11.79 0.03 222 0.14 0.14 Fixnum#to_s > 0.24 11.82 0.03 85 0.34 0.34 FileFormat:: > WavFile#fileDir > 0.21 11.85 0.02 238 0.11 0.11 Kernel.block_given? > 0.20 11.87 0.02 240 0.10 0.10 Time#initialize > 0.19 11.90 0.02 17 1.35 1.71 FileFormat:: > WavFile#readBytes > 0.19 11.92 0.02 238 0.10 0.10 ##pass > 0.17 11.94 0.02 17 1.24 16.71 FileFormat:: > WavFile#extraParamSize > 0.15 11.96 0.02 17 1.06 1.94 FileFormat:: > WavFile#openFile > 0.15 11.98 0.02 238 0.08 0.08 Module#=== > 0.14 11.99 0.02 355 0.05 0.05 Fixnum#- > 0.13 12.01 0.02 34 0.47 23.35 FileFormat:: > WavFile#subChunk2Size > 0.13 12.02 0.02 87 0.18 0.18 IO#readline > 0.10 12.04 0.01 18 0.67 16.67 FileFormat:: > WavFile#bitPerSample > 0.10 12.05 0.01 238 0.05 0.05 File::Stat#size > 0.09 12.06 0.01 238 0.05 0.05 Kernel.nil? > 0.08 12.07 0.01 1 10.00 801.00 FileFormat:: > FileConcat#concatFiles > 0.08 12.08 0.01 17 0.59 0.59 FileFormat:: > WavFile#initialize > 0.07 12.09 0.01 17 0.53 0.53 ##open > 0.07 12.10 0.01 34 0.26 0.38 FileFormat:: > WavFile#fileSize > 0.07 12.11 0.01 18 0.44 5.67 FileFormat:: > WavFile#sampleRate > 0.07 12.11 0.01 87 0.09 0.09 String#index > 0.05 12.12 0.01 9 0.67 4.78 FileFormat:: > FileConcat#writeData > 0.05 12.12 0.01 17 0.35 0.35 FileTest.exist? > 0.04 12.13 0.01 2 2.50 8.00 Integer#downto > 0.04 12.14 0.01 18 0.28 6.17 FileFormat:: > WavFile#subChunk1Size > 0.04 12.14 0.01 18 0.28 4.67 FileFormat:: > WavFile#blockAlign > 0.04 12.15 0.00 17 0.29 0.71 FileFormat:: > WavFile#chunkSize > 0.04 12.15 0.00 18 0.28 12.22 FileFormat:: > WavFile#byteRate > 0.03 12.15 0.00 34 0.12 0.12 FileTest.size > 0.03 12.16 0.00 44 0.09 0.09 IO#putc > 0.03 12.16 0.00 18 0.22 0.22 IO#to_io > 0.02 12.17 0.00 17 0.18 5.82 FileFormat:: > WavFile#extraParams > 0.02 12.17 0.00 2 1.50 3.50 Logger:: > LogDevice#create_logfile > 0.02 12.17 0.00 20 0.15 0.15 IO#close > 0.02 12.17 0.00 17 0.12 0.12 Array#<< > 0.02 12.18 0.00 8 0.25 0.25 ##rename > 0.02 12.18 0.00 28 0.07 0.07 Fixnum#<< > 0.02 12.18 0.00 56 0.04 0.04 Fixnum#>> > 0.02 12.18 0.00 18 0.11 8.94 FileFormat:: > WavFile#numChannels > 0.02 12.18 0.00 51 0.04 0.04 IO#eof > 0.01 12.18 0.00 2 0.50 2.00 Logger:: > LogDevice#add_log_header > 0.01 12.18 0.00 2 0.50 0.50 Time#to_s > 0.00 12.18 0.00 2 0.00 0.00 IO#sync= > 0.00 12.18 0.00 2 0.00 12.50 Logger:: > LogDevice#shift_log_age > 0.00 12.18 0.00 6 0.00 0.00 ##exist? > 0.00 12.18 0.00 1 0.00 0.00 Array#length > 0.00 12.18 0.00 2 0.00 0.00 Kernel.open > 0.00 12.18 0.00 1 0.00 31.00 FileFormat:: > FileConcat#initialize > 0.00 12.18 0.00 17 0.00 0.00 Array#to_s > 0.00 12.18 0.00 1 0.00 209.00 FileFormat:: > FileConcat#concat_data_block > 0.00 12.18 0.00 4 0.00 0.00 Fixnum#| > 0.00 12.18 0.00 4 0.00 1.00 FileFormat:: > FileConcat#writeBytes > 0.00 12.19 0.00 1 0.00 12187.00 #toplevel > > This performance of JRuby is rather bad. Reasons may come from: > 1. JRuby is in nature very slow. We can not do anything to this > 2. JRuby's startup time is longer than that of Ruby. I wonder this > situation would be improved if we have had on in-memory JVM > > > Peter K Chan wrote: > Not anymore, Nate. :) > > JRuby WAS slow six months ago, but it has come a long way. Check this out: > > http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance.html > > Summary: In interpretive mode, JRuby is no more than 2x slower, and > that's including JVM startup and lack of hotspot warm up. In > unoptimized compiled mode, JRuby often beats C Ruby. I have been using > JRuby in my project, and I haven't had any performance complaints > since 2 months ago. > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto: > chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > Sent: Tuesday, May 29, 2007 2:23 AM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Peter, > > JRuby is slow. Try RJB (http://rjb.rubyforge.org/) > > Nate > > Peter K Chan wrote: > Sure! I will be up for some Uger-hacking/feedback-taking (I also need to > apply Colin's patch from a while ago and push it out). > > Hmm...maybe I should think of a lightning talk on JRuby or something. > > Peter > > -----Original Message----- > From: chicagogroup-members-list-bounces at rubyforge.org > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > Evan Farrar > Sent: Monday, May 28, 2007 5:51 PM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Woohoo Lightning talks! I will definitely come with something. I also > would like to call together a uger hacksession if Peter Chang is > around for the meeting. > > On 5/28/07, Josh Cronemeyer wrote: > > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. If > > you can > > prepare something that you can get through in 10 minutes or so, please > > do. > > Alternatively you can put out a request for a talk on a certain topic > > and > > perhaps that will inspire somebody. I'm mulling over a topic just to > > force > > myself to learn something new (Why's camping framework). But I make > > no > > promises :) Let's have fun with this and take advantage of the chance > > for > > all of us to talk. No pressure!!!! > > http://chirb.org/event/show/18 > > Josh Cronemeyer > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070529/ca11d5f5/attachment-0001.html From peter at oaktop.com Tue May 29 13:55:33 2007 From: peter at oaktop.com (Peter K Chan) Date: Tue, 29 May 2007 13:55:33 -0400 Subject: [Chirb] JRuby performance In-Reply-To: References: <465BF078.8050808@yahoo.com> Message-ID: Nate, Josh has already brought up most of what I was going to reply to you, but let me just highlight these factors, which may explain your performance result: - Are you using a modern JVM, such as Sun 1.6.0, with hotspot/JIT compilation? - Did you disable object space? (Makes a huge 20% - 40% difference, I disable it in all my apps) - Did you pull the latest trunk or at least RC version of JRuby? - Did you turn on the JRuby AOT or JIT compiler? - I think that JRuby's set_trace_func is slow; therefore, if you use profile.rb, you may be incurring large profiling cost (actually, set_trace_func isn't working in current JRuby compiler, so you must have been running JRuby in pure interpretive mode). Also, keep in mind that the benchmark result I linked to include JVM startup time. If you consider that the JVM takes a few seconds to fully warm up, and most benchmark finishes in a few seconds, JRuby's result is even more impressive. Don't take my word for it. Run your benchmark with the right settings, and you can see for yourself. :) Peter ________________________________________ From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Josh Cronemeyer Sent: Tuesday, May 29, 2007 11:11 AM To: Chirb discussion list Subject: [Chirb] JRuby performance discussion moved from this thread: Re: [Chirb] time to rsvp for the mystery meeting! W00t Nate, I've heard alot of good stuff about jruby performance, not from just peter. ? > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) I think you should run your tests with a real JVM (like sun's implementation). ?You are using gij which is a java interpretor. ?GIJ is a part of the GCJ project. ?GCJ is a very different beast than sun's implementation. ?The idea behind GCJ is that java is compiled down to your specific platform's machine code. ?So they bypass the jvm all together. ?This sounds like it would be faster, but it really isn't for many things because sun's just in time compilation can actually compile the same code in different ways depending on context in order to optimize execution. ?I'm not sure if Jruby uses runtime code loading or generation (i wouldn't be surprised though). ?If that is the case GCJ is SUPER slow for those types of operations because that is when the gij interpreter kicks in. ?The interpreter is realizing no benefits from optimization or compilation. ? The short of it: I wouldn't call my tests definitive until I was using sun's jvm. Josh Cronemeyer chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 04:20:56 AM: > Peter, > > I can take your word for it....or I can check the performance stats we > just did a few weeks ago JRuby was 10x slower than ruby at the command > line on a Fedora box. > > Nate > > STATS > > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > > Copyright (C) 2006 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. ?There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > I did not change the default JVM. I used the Ruby project > concatenating wav files and profiler to see the performance data. This > is the result: > Ruby: > ? % ? cumulative ? self ? ? ? ? ? ? ?self ? ? total > ?time ? seconds ? seconds ? ?calls ?ms/call ?ms/call ?name > ?10.24 ? ? 0.13 ? ? ?0.13 ? ? ?238 ? ? 0.55 ? ? 1.13 ?MonitorMixin.mon_exit > ? 7.09 ? ? 0.22 ? ? ?0.09 ? ? ?238 ? ? 0.38 ? ? 2.27 ?MonitorMixin.synchronize > ? 6.30 ? ? 0.30 ? ? ?0.08 ? ? ?238 ? ? 0.34 ? ? 3.57 ?Logger#add > ? 5.51 ? ? 0.37 ? ? ?0.07 ? ? ?238 ? ? 0.29 ? ? 0.34 ?Logger:: > Formatter#format_datetime > ? 4.72 ? ? 0.43 ? ? ?0.06 ? ? ? 17 ? ? 3.53 ? ?68.82 ?FileFormat:: > WavFile#getInfo > ? 4.72 ? ? 0.49 ? ? ?0.06 ? ? ?203 ? ? 0.30 ? ? 0.69 ?Integer#times > ? 3.94 ? ? 0.54 ? ? ?0.05 ? ? ?238 ? ? 0.21 ? ? 0.42 ?Logger:: > LogDevice#check_shift_log > ? 3.15 ? ? 0.58 ? ? ?0.04 ? ? ?238 ? ? 0.17 ? ? 0.25 ?MonitorMixin.mon_release > ? 3.15 ? ? 0.62 ? ? ?0.04 ? ? ?238 ? ? 0.17 ? ? 0.34 ?MonitorMixin.mon_enter > ? 2.36 ? ? 0.65 ? ? ?0.03 ? ? ?256 ? ? 0.12 ? ? 0.12 ?String#+ > ? 2.36 ? ? 0.68 ? ? ?0.03 ? ? ? 87 ? ? 0.34 ? ? 0.57 ?FileFormat:: > WavFile#dataPos > ? 2.36 ? ? 0.71 ? ? ?0.03 ? ? ?177 ? ? 0.17 ? ? 0.85 ?FileFormat:: > WavFile#readBigNum > ? 2.36 ? ? 0.74 ? ? ?0.03 ? ? ?530 ? ? 0.06 ? ? 0.06 ?IO#getc > ? 2.36 ? ? 0.77 ? ? ?0.03 ? ? ? ?8 ? ? 3.75 ? 155.00 ?Array#each > ? 2.36 ? ? 0.80 ? ? ?0.03 ? ? ?476 ? ? 0.06 ? ? 0.06 ?Thread#current > ? 2.36 ? ? 0.83 ? ? ?0.03 ? ? ?238 ? ? 0.13 ? ? 0.13 ?Logger#format_severity > ? 2.36 ? ? 0.86 ? ? ?0.03 ? ? ?238 ? ? 0.13 ? ? 0.21 ?MonitorMixin. > mon_check_owner > ? 2.36 ? ? 0.89 ? ? ?0.03 ? ? ?952 ? ? 0.03 ? ? 0.03 ?Thread#critical= > ? 2.36 ? ? 0.92 ? ? ?0.03 ? ? ?238 ? ? 0.13 ? ? 0.55 ?Logger::Formatter#call > ? 1.57 ? ? 0.94 ? ? ?0.02 ? ? ?476 ? ? 0.04 ? ? 0.04 ?Array#shift > ? 1.57 ? ? 0.96 ? ? ?0.02 ? ? 1060 ? ? 0.02 ? ? 0.02 ?Fixnum#* > ? 1.57 ? ? 0.98 ? ? ?0.02 ? ? ?238 ? ? 0.08 ? ? 0.08 ?Module#=== > ? 1.57 ? ? 1.00 ? ? ?0.02 ? ? ?238 ? ? 0.08 ? ? 0.08 ?IO#stat > ? 1.57 ? ? 1.02 ? ? ?0.02 ? ? ? 87 ? ? 0.23 ? ? 0.23 ?IO#readline > ? 1.57 ? ? 1.04 ? ? ?0.02 ? ? ?476 ? ? 0.04 ? ? 0.04 ?Fixnum#> > ? 1.57 ? ? 1.06 ? ? ?0.02 ? ? ?965 ? ? 0.02 ? ? 0.02 ?Fixnum#+ > ? 0.79 ? ? 1.07 ? ? ?0.01 ? ? ? 17 ? ? 0.59 ? ? 2.94 ?FileFormat:: > WavFile#extraParams > ? 0.79 ? ? 1.08 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?Kernel.nil? > ? 0.79 ? ? 1.09 ? ? ?0.01 ? ? ?240 ? ? 0.04 ? ? 0.04 ?Time#initialize > ? 0.79 ? ? 1.10 ? ? ?0.01 ? ? ? 44 ? ? 0.23 ? ? 0.23 ?IO#putc > ? 0.79 ? ? 1.11 ? ? ?0.01 ? ? ? 34 ? ? 0.29 ? ? 0.29 ?FileFormat:: > WavFile#fileSize > ? 0.79 ? ? 1.12 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.59 ?Logger#format_message > ? 0.79 ? ? 1.13 ? ? ?0.01 ? ? ? 34 ? ? 0.29 ? ? 0.29 ?IO#read > ? 0.79 ? ? 1.14 ? ? ?0.01 ? ? ? 17 ? ? 0.59 ? ? 0.59 ?FileFormat:: > WavFile#readBytes > ? 0.79 ? ? 1.15 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?Time#usec > ? 0.79 ? ? 1.16 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?Kernel.block_given? > ? 0.79 ? ? 1.17 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 2.31 ?Logger::LogDevice#write > ? 0.79 ? ? 1.18 ? ? ?0.01 ? ? ? 18 ? ? 0.56 ? ? 0.56 ?FileFormat:: > WavFile#bitPerSample > ? 0.79 ? ? 1.19 ? ? ?0.01 ? ? ? 34 ? ? 0.29 ? ? 1.47 ?FileFormat:: > WavFile#subChunk2Size > ? 0.79 ? ? 1.20 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.13 ?MonitorMixin.mon_acquire > ? 0.79 ? ? 1.21 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?Fixnum#< > ? 0.79 ? ? 1.22 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 3.61 ?Logger#info > ? 0.79 ? ? 1.23 ? ? ?0.01 ? ? ? 18 ? ? 0.56 ? ? 1.67 ?FileFormat:: > WavFile#sampleRate > ? 0.79 ? ? 1.24 ? ? ?0.01 ? ? ?325 ? ? 0.03 ? ? 0.03 ?Kernel.== > ? 0.79 ? ? 1.25 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?File::Stat#size > ? 0.79 ? ? 1.26 ? ? ?0.01 ? ? ?240 ? ? 0.04 ? ? 0.08 ?Time#now > ? 0.79 ? ? 1.27 ? ? ?0.01 ? ? ?344 ? ? 0.03 ? ? 0.03 ?Fixnum#== > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?IO#sync= > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 0.56 ?FileFormat:: > WavFile#byteRate > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 0.00 ?Class#new > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?Array#to_s > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ? 0.00 ?FileFormat:: > FileConcat#initialize > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 0.00 ?IO#to_io > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 35 ? ? 0.00 ? ? 0.00 ?FileFormat:: > WavFile#audioFormat > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.08 ?Logger::Formatter#msg2str > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?String#[] > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat:: > WavFile#openFile > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 28 ? ? 0.00 ? ? 0.00 ?Fixnum#<< > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 56 ? ? 0.00 ? ? 0.00 ?Fixnum#>> > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Logger:: > LogDevice#create_logfile > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?298 ? ? 0.00 ? ? 0.00 ?IO#pos= > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?File#exist? > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?Thread#pass > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?NilClass#to_s > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?Array#<< > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 51 ? ? 0.00 ? ? 0.00 ?IO#eof? > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?9 ? ? 0.00 ? ? 2.22 ?FileFormat:: > FileConcat#writeData > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Time#to_s > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat::WavFile#exist? > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat:: > WavFile#chunkSize > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?Kernel.respond_to? > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ? 0.00 ?IO#new > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?Time#strftime > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?4 ? ? 0.00 ? ? 0.00 ?Fixnum#| > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 0.56 ?FileFormat:: > WavFile#blockAlign > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat:: > WavFile#extraParamSize > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?6 ? ? 0.00 ? ? 0.00 ?FileTest.exist? > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?IO#open > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?355 ? ? 0.00 ? ? 0.00 ?Fixnum#- > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?239 ? ? 0.00 ? ? 0.00 ?Array#[] > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 1.67 ?FileFormat:: > WavFile#numChannels > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ? 0.00 ?Array#size > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 20 ? ? 0.00 ? ? 0.00 ?IO#close > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?8 ? ? 0.00 ? ? 0.00 ?File#rename > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 87 ? ? 0.00 ? ? 0.00 ?String#index > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat:: > WavFile#initialize > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ?90.00 ?FileFormat:: > FileConcat#concatFiles > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Kernel.open > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Integer#downto > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?4 ? ? 0.00 ? ? 0.00 ?FileFormat:: > FileConcat#writeBytes > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ?30.00 ?FileFormat:: > FileConcat#concat_data_block > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?476 ? ? 0.00 ? ? 0.00 ?NilClass#nil? > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 20 ? ? 0.00 ? ? 0.00 ?File#initialize > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?478 ? ? 0.00 ? ? 0.00 ?String#% > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Logger:: > LogDevice#add_log_header > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 2.78 ?FileFormat:: > WavFile#subChunk1Size > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Logger:: > LogDevice#shift_log_age > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?318 ? ? 0.00 ? ? 0.00 ?IO#write > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?String#<< > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?Kernel.is_a? > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?222 ? ? 0.00 ? ? 0.00 ?Fixnum#to_s > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 34 ? ? 0.00 ? ? 0.00 ?File#size > ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ?1270.00 ?#toplevel > > JRuby: > % ? cumulative ? self ? ? ? ? ? ? ?self ? ? total > ?time ? seconds ? seconds ? ?calls ?ms/call ?ms/call ?name > ?10.27 ? ? 1.25 ? ? ?1.25 ? ? ?203 ? ? 6.17 ? ? 7.84 ?Integer#times > ? 9.64 ? ? 2.43 ? ? ?1.17 ? ? ?238 ? ? 4.94 ? ?36.55 ?Logger#add > ? 6.57 ? ? 3.23 ? ? ?0.80 ? ? ?238 ? ? 3.37 ? ? 5.86 ?MonitorMixin.mon_exit > ? 5.23 ? ? 3.86 ? ? ?0.64 ? ? ?238 ? ? 2.68 ? ? 4.19 ?Logger:: > Formatter#format_datetime > ? 4.92 ? ? 4.46 ? ? ?0.60 ? ? ?238 ? ? 2.52 ? ?19.33 ?MonitorMixin. > mon_synchronize > ? 4.37 ? ? 5.00 ? ? ?0.53 ? ? ?274 ? ? 1.95 ? ? 1.95 ?IO#write > ? 4.12 ? ? 5.50 ? ? ?0.50 ? ? ?238 ? ? 2.11 ? ? 5.62 ?Logger:: > LogDevice#check_shift_log > ? 3.36 ? ? 5.91 ? ? ?0.41 ? ? ?238 ? ? 1.72 ? ? 3.01 ?MonitorMixin.mon_enter > ? 3.23 ? ? 6.30 ? ? ?0.39 ? ? ?497 ? ? 0.79 ? ? 1.52 ?Class#new > ? 3.08 ? ? 6.68 ? ? ?0.38 ? ? ?238 ? ? 1.58 ? ? 1.65 ?Logger::Formatter#msg2str > ? 2.33 ? ? 6.96 ? ? ?0.28 ? ? ?238 ? ? 1.19 ? ? 1.62 ?Logger#format_severity > ? 2.33 ? ? 7.24 ? ? ?0.28 ? ? ?238 ? ? 1.19 ? ?37.75 ?Logger#info > ? 2.21 ? ? 7.51 ? ? ?0.27 ? ? ?238 ? ? 1.13 ? ? 7.65 ?Logger::Formatter#call > ? 2.18 ? ? 7.78 ? ? ?0.27 ? ? ?238 ? ? 1.12 ? ? 1.12 ?File::Stat#initialize > ? 2.08 ? ? 8.03 ? ? ?0.25 ? ? ? 17 ? ?14.94 ? 658.12 ?FileFormat:: > WavFile#getInfo > ? 1.71 ? ? 8.24 ? ? ?0.21 ? ? ?238 ? ? 0.88 ? ? 1.00 ?MonitorMixin.mon_acquire > ? 1.70 ? ? 8.45 ? ? ?0.21 ? ? ? 87 ? ? 2.38 ? ? 4.87 ?FileFormat:: > WavFile#dataPos > ? 1.62 ? ? 8.65 ? ? ?0.20 ? ? ?177 ? ? 1.12 ? ?10.50 ?FileFormat:: > WavFile#readBigNum > ? 1.51 ? ? 8.83 ? ? ?0.18 ? ? ?478 ? ? 0.38 ? ? 0.55 ?String#% > ? 1.44 ? ? 9.01 ? ? ?0.18 ? ? ?238 ? ? 0.74 ? ? 8.39 ?Logger#format_message > ? 1.40 ? ? 9.18 ? ? ?0.17 ? ? ?476 ? ? 0.36 ? ? 0.36 ?NilClass#nil? > ? 1.37 ? ? 9.35 ? ? ?0.17 ? ? ?238 ? ? 0.70 ? ? 1.08 ?MonitorMixin.mon_release > ? 1.32 ? ? 9.51 ? ? ?0.16 ? ? ?238 ? ? 0.68 ? ? 0.68 ?Time#strftime > ? 1.31 ? ? 9.67 ? ? ?0.16 ? ? ?298 ? ? 0.54 ? ? 0.54 ?IO#pos= > ? 1.23 ? ? 9.82 ? ? ?0.15 ? ? ?915 ? ? 0.16 ? ? 0.16 ?FileFormat::WavFile#file > ? 1.19 ? ? 9.96 ? ? ?0.15 ? ? ?238 ? ? 0.61 ? ?19.94 ?Logger::LogDevice#write > ? 1.10 ? ?10.10 ? ? ?0.13 ? ? ?952 ? ? 0.14 ? ? 0.14 ?##critical= > ? 1.00 ? ?10.22 ? ? ?0.12 ? ? ?238 ? ? 0.51 ? ? 0.80 ?MonitorMixin. > mon_check_owner > ? 0.91 ? ?10.33 ? ? ?0.11 ? ? ?530 ? ? 0.21 ? ? 0.21 ?IO#getc > ? 0.85 ? ?10.43 ? ? ?0.10 ? ? ?238 ? ? 0.43 ? ? 0.43 ?Kernel.is_a? > ? 0.85 ? ?10.54 ? ? ?0.10 ? ? 1060 ? ? 0.10 ? ? 0.10 ?Fixnum#* > ? 0.83 ? ?10.64 ? ? ?0.10 ? ? ?239 ? ? 0.42 ? ? 0.42 ?Array#[] > ? 0.81 ? ?10.74 ? ? ?0.10 ? ? ?476 ? ? 0.21 ? ? 0.21 ?Fixnum#> > ? 0.75 ? ?10.83 ? ? ?0.09 ? ? ?476 ? ? 0.19 ? ? 0.19 ?Array#shift > ? 0.72 ? ?10.91 ? ? ?0.09 ? ? ?965 ? ? 0.09 ? ? 0.09 ?Fixnum#+ > ? 0.71 ? ?11.00 ? ? ?0.09 ? ? ? ?8 ? ?10.75 ?1494.63 ?Array#each > ? 0.71 ? ?11.09 ? ? ?0.09 ? ? ? 34 ? ? 2.53 ? ? 2.53 ?IO#read > ? 0.66 ? ?11.17 ? ? ?0.08 ? ? ?238 ? ? 0.34 ? ? 2.50 ?File#stat > ? 0.66 ? ?11.25 ? ? ?0.08 ? ? ?238 ? ? 0.34 ? ? 0.34 ?Time#usec > ? 0.64 ? ?11.33 ? ? ?0.08 ? ? ?238 ? ? 0.33 ? ? 0.33 ?NilClass#to_s > ? 0.62 ? ?11.40 ? ? ?0.08 ? ? ?238 ? ? 0.32 ? ? 0.32 ?Kernel.respond_to? > ? 0.61 ? ?11.47 ? ? ?0.07 ? ? ? 35 ? ? 2.11 ? ?11.74 ?FileFormat:: > WavFile#audioFormat > ? 0.57 ? ?11.54 ? ? ?0.07 ? ? ?344 ? ? 0.20 ? ? 0.21 ?Fixnum#== > ? 0.51 ? ?11.61 ? ? ?0.06 ? ? ?476 ? ? 0.13 ? ? 0.13 ?##current > ? 0.40 ? ?11.65 ? ? ?0.05 ? ? ?238 ? ? 0.21 ? ? 0.21 ?Fixnum#< > ? 0.33 ? ?11.69 ? ? ?0.04 ? ? ?325 ? ? 0.12 ? ? 0.12 ?Kernel.== > ? 0.32 ? ?11.73 ? ? ?0.04 ? ? ? 17 ? ? 2.29 ? ? 5.71 ?FileFormat::WavFile#exist? > ? 0.25 ? ?11.76 ? ? ?0.03 ? ? ? ?1 ? ?31.00 ? ?31.00 ?File#initialize > ? 0.25 ? ?11.79 ? ? ?0.03 ? ? ?222 ? ? 0.14 ? ? 0.14 ?Fixnum#to_s > ? 0.24 ? ?11.82 ? ? ?0.03 ? ? ? 85 ? ? 0.34 ? ? 0.34 ?FileFormat:: > WavFile#fileDir > ? 0.21 ? ?11.85 ? ? ?0.02 ? ? ?238 ? ? 0.11 ? ? 0.11 ?Kernel.block_given? > ? 0.20 ? ?11.87 ? ? ?0.02 ? ? ?240 ? ? 0.10 ? ? 0.10 ?Time#initialize > ? 0.19 ? ?11.90 ? ? ?0.02 ? ? ? 17 ? ? 1.35 ? ? 1.71 ?FileFormat:: > WavFile#readBytes > ? 0.19 ? ?11.92 ? ? ?0.02 ? ? ?238 ? ? 0.10 ? ? 0.10 ?##pass > ? 0.17 ? ?11.94 ? ? ?0.02 ? ? ? 17 ? ? 1.24 ? ?16.71 ?FileFormat:: > WavFile#extraParamSize > ? 0.15 ? ?11.96 ? ? ?0.02 ? ? ? 17 ? ? 1.06 ? ? 1.94 ?FileFormat:: > WavFile#openFile > ? 0.15 ? ?11.98 ? ? ?0.02 ? ? ?238 ? ? 0.08 ? ? 0.08 ?Module#=== > ? 0.14 ? ?11.99 ? ? ?0.02 ? ? ?355 ? ? 0.05 ? ? 0.05 ?Fixnum#- > ? 0.13 ? ?12.01 ? ? ?0.02 ? ? ? 34 ? ? 0.47 ? ?23.35 ?FileFormat:: > WavFile#subChunk2Size > ? 0.13 ? ?12.02 ? ? ?0.02 ? ? ? 87 ? ? 0.18 ? ? 0.18 ?IO#readline > ? 0.10 ? ?12.04 ? ? ?0.01 ? ? ? 18 ? ? 0.67 ? ?16.67 ?FileFormat:: > WavFile#bitPerSample > ? 0.10 ? ?12.05 ? ? ?0.01 ? ? ?238 ? ? 0.05 ? ? 0.05 ?File::Stat#size > ? 0.09 ? ?12.06 ? ? ?0.01 ? ? ?238 ? ? 0.05 ? ? 0.05 ?Kernel.nil? > ? 0.08 ? ?12.07 ? ? ?0.01 ? ? ? ?1 ? ?10.00 ? 801.00 ?FileFormat:: > FileConcat#concatFiles > ? 0.08 ? ?12.08 ? ? ?0.01 ? ? ? 17 ? ? 0.59 ? ? 0.59 ?FileFormat:: > WavFile#initialize > ? 0.07 ? ?12.09 ? ? ?0.01 ? ? ? 17 ? ? 0.53 ? ? 0.53 ?##open > ? 0.07 ? ?12.10 ? ? ?0.01 ? ? ? 34 ? ? 0.26 ? ? 0.38 ?FileFormat:: > WavFile#fileSize > ? 0.07 ? ?12.11 ? ? ?0.01 ? ? ? 18 ? ? 0.44 ? ? 5.67 ?FileFormat:: > WavFile#sampleRate > ? 0.07 ? ?12.11 ? ? ?0.01 ? ? ? 87 ? ? 0.09 ? ? 0.09 ?String#index > ? 0.05 ? ?12.12 ? ? ?0.01 ? ? ? ?9 ? ? 0.67 ? ? 4.78 ?FileFormat:: > FileConcat#writeData > ? 0.05 ? ?12.12 ? ? ?0.01 ? ? ? 17 ? ? 0.35 ? ? 0.35 ?FileTest.exist? > ? 0.04 ? ?12.13 ? ? ?0.01 ? ? ? ?2 ? ? 2.50 ? ? 8.00 ?Integer#downto > ? 0.04 ? ?12.14 ? ? ?0.01 ? ? ? 18 ? ? 0.28 ? ? 6.17 ?FileFormat:: > WavFile#subChunk1Size > ? 0.04 ? ?12.14 ? ? ?0.01 ? ? ? 18 ? ? 0.28 ? ? 4.67 ?FileFormat:: > WavFile#blockAlign > ? 0.04 ? ?12.15 ? ? ?0.00 ? ? ? 17 ? ? 0.29 ? ? 0.71 ?FileFormat:: > WavFile#chunkSize > ? 0.04 ? ?12.15 ? ? ?0.00 ? ? ? 18 ? ? 0.28 ? ?12.22 ?FileFormat:: > WavFile#byteRate > ? 0.03 ? ?12.15 ? ? ?0.00 ? ? ? 34 ? ? 0.12 ? ? 0.12 ?FileTest.size > ? 0.03 ? ?12.16 ? ? ?0.00 ? ? ? 44 ? ? 0.09 ? ? 0.09 ?IO#putc > ? 0.03 ? ?12.16 ? ? ?0.00 ? ? ? 18 ? ? 0.22 ? ? 0.22 ?IO#to_io > ? 0.02 ? ?12.17 ? ? ?0.00 ? ? ? 17 ? ? 0.18 ? ? 5.82 ?FileFormat:: > WavFile#extraParams > ? 0.02 ? ?12.17 ? ? ?0.00 ? ? ? ?2 ? ? 1.50 ? ? 3.50 ?Logger:: > LogDevice#create_logfile > ? 0.02 ? ?12.17 ? ? ?0.00 ? ? ? 20 ? ? 0.15 ? ? 0.15 ?IO#close > ? 0.02 ? ?12.17 ? ? ?0.00 ? ? ? 17 ? ? 0.12 ? ? 0.12 ?Array#<< > ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? ?8 ? ? 0.25 ? ? 0.25 ?##rename > ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? 28 ? ? 0.07 ? ? 0.07 ?Fixnum#<< > ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? 56 ? ? 0.04 ? ? 0.04 ?Fixnum#>> > ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? 18 ? ? 0.11 ? ? 8.94 ?FileFormat:: > WavFile#numChannels > ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? 51 ? ? 0.04 ? ? 0.04 ?IO#eof > ? 0.01 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.50 ? ? 2.00 ?Logger:: > LogDevice#add_log_header > ? 0.01 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.50 ? ? 0.50 ?Time#to_s > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?IO#sync= > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ?12.50 ?Logger:: > LogDevice#shift_log_age > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?6 ? ? 0.00 ? ? 0.00 ?##exist? > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ? 0.00 ?Array#length > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Kernel.open > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ?31.00 ?FileFormat:: > FileConcat#initialize > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?Array#to_s > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? 209.00 ?FileFormat:: > FileConcat#concat_data_block > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?4 ? ? 0.00 ? ? 0.00 ?Fixnum#| > ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?4 ? ? 0.00 ? ? 1.00 ?FileFormat:: > FileConcat#writeBytes > ? 0.00 ? ?12.19 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 12187.00 ?#toplevel > > This performance of JRuby is rather bad. Reasons may come from: > 1. JRuby is in nature very slow. We can not do anything to this > 2. JRuby's startup time is longer than that of Ruby. I wonder this > situation would be improved if we have had on in-memory JVM > > > Peter K Chan wrote: > Not anymore, Nate. :) > > JRuby WAS slow six months ago, but it has come a long way. Check this out: > > http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance.html > > Summary: In interpretive mode, JRuby is no more than 2x slower, and > that's including JVM startup and lack of hotspot warm up. In > unoptimized compiled mode, JRuby often beats C Ruby. I have been using > JRuby in my project, and I haven't had any performance complaints > since 2 months ago. > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto: > chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > Sent: Tuesday, May 29, 2007 2:23 AM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Peter, > > JRuby is slow. ?Try RJB (http://rjb.rubyforge.org/) > > Nate > > Peter K Chan wrote: > Sure! I will be up for some Uger-hacking/feedback-taking (I also need to > apply Colin's patch from a while ago and push it out). > > Hmm...maybe I should think of a lightning talk on JRuby or something. > > Peter > > -----Original Message----- > From: chicagogroup-members-list-bounces at rubyforge.org > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > Evan Farrar > Sent: Monday, May 28, 2007 5:51 PM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Woohoo Lightning talks! I will definitely come with something. I also > would like to call together a uger hacksession if Peter Chang is > around for the meeting. > > On 5/28/07, Josh Cronemeyer wrote: > ? > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. ?Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. ?If > ? ? > you can > ? > prepare something that you can get through in 10 minutes or so, please > ? ? > do. > ? > Alternatively you can put out a request for a talk on a certain topic > ? ? > and > ? > perhaps that will inspire somebody. ?I'm mulling over a topic just to > ? ? > force > ? > myself to learn something new (Why's camping framework). ?But I make > ? ? > no > ? > promises :) ?Let's have fun with this and take advantage of the chance > ? ? > for > ? > all of us to talk. ?No pressure!!!! > > http://chirb.org/event/show/18 > > Josh Cronemeyer > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > ? ? > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > ? > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > ? _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list From jcroneme at thoughtworks.com Tue May 29 14:01:26 2007 From: jcroneme at thoughtworks.com (Josh Cronemeyer) Date: Tue, 29 May 2007 13:01:26 -0500 Subject: [Chirb] JRuby performance In-Reply-To: Message-ID: Peter, I was wondering what you knew about how JRuby works. I would imagine there would be a fair amount of dynamic class loading since ruby objects are always open for modification. Is this the case? Josh Cronemeyer chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 12:55:33 PM: > Nate, > Josh has already brought up most of what I was going to reply to > you, but let me just highlight these factors, which may explain your > performance result: > > - Are you using a modern JVM, such as Sun 1.6.0, with hotspot/JIT compilation? > - Did you disable object space? (Makes a huge 20% - 40% difference, I > disable it in all my apps) > - Did you pull the latest trunk or at least RC version of JRuby? > - Did you turn on the JRuby AOT or JIT compiler? > - I think that JRuby's set_trace_func is slow; therefore, if you use > profile.rb, you may be incurring large profiling cost (actually, > set_trace_func isn't working in current JRuby compiler, so you must > have been running JRuby in pure interpretive mode). > > Also, keep in mind that the benchmark result I linked to include > JVM startup time. If you consider that the JVM takes a few seconds to > fully warm up, and most benchmark finishes in a few seconds, JRuby's > result is even more impressive. > > Don't take my word for it. Run your benchmark with the right > settings, and you can see for yourself. :) > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto: > chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Josh Cronemeyer > Sent: Tuesday, May 29, 2007 11:11 AM > To: Chirb discussion list > Subject: [Chirb] JRuby performance > > > discussion moved from this thread: Re: [Chirb] time to rsvp for the > mystery meeting! W00t > > Nate, > > I've heard alot of good stuff about jruby performance, not from just peter. > > > [programmer at Mark ~]$ java --version > > java version "1.4.2" > > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > I think you should run your tests with a real JVM (like sun's > implementation). You are using gij which is a java interpretor. GIJ > is a part of the GCJ project. GCJ is a very different beast than > sun's implementation. The idea behind GCJ is that java is compiled > down to your specific platform's machine code. So they bypass the jvm > all together. This sounds like it would be faster, but it really > isn't for many things because sun's just in time compilation can > actually compile the same code in different ways depending on context > in order to optimize execution. I'm not sure if Jruby uses runtime > code loading or generation (i wouldn't be surprised though). If that > is the case GCJ is SUPER slow for those types of operations because > that is when the gij interpreter kicks in. The interpreter is > realizing no benefits from optimization or compilation. > > The short of it: I wouldn't call my tests definitive until I was using > sun's jvm. > > Josh Cronemeyer > > chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 04:20:56 AM: > > > Peter, > > > > I can take your word for it....or I can check the performance stats we > > just did a few weeks ago JRuby was 10x slower than ruby at the command > > line on a Fedora box. > > > > Nate > > > > STATS > > > > [programmer at Mark ~]$ java --version > > java version "1.4.2" > > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > > > > Copyright (C) 2006 Free Software Foundation, Inc. > > This is free software; see the source for copying conditions. There is NO > > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > > > I did not change the default JVM. I used the Ruby project > > concatenating wav files and profiler to see the performance data. This > > is the result: > > Ruby: > > % cumulative self self total > > time seconds seconds calls ms/call ms/call name > > 10.24 0.13 0.13 238 0.55 1.13 MonitorMixin.mon_exit > > 7.09 0.22 0.09 238 0.38 2.27 MonitorMixin.synchronize > > 6.30 0.30 0.08 238 0.34 3.57 Logger#add > > 5.51 0.37 0.07 238 0.29 0.34 Logger:: > > Formatter#format_datetime > > 4.72 0.43 0.06 17 3.53 68.82 FileFormat:: > > WavFile#getInfo > > 4.72 0.49 0.06 203 0.30 0.69 Integer#times > > 3.94 0.54 0.05 238 0.21 0.42 Logger:: > > LogDevice#check_shift_log > > 3.15 0.58 0.04 238 0.17 0.25 MonitorMixin.mon_release > > 3.15 0.62 0.04 238 0.17 0.34 MonitorMixin.mon_enter > > 2.36 0.65 0.03 256 0.12 0.12 String#+ > > 2.36 0.68 0.03 87 0.34 0.57 FileFormat:: > > WavFile#dataPos > > 2.36 0.71 0.03 177 0.17 0.85 FileFormat:: > > WavFile#readBigNum > > 2.36 0.74 0.03 530 0.06 0.06 IO#getc > > 2.36 0.77 0.03 8 3.75 155.00 Array#each > > 2.36 0.80 0.03 476 0.06 0.06 Thread#current > > 2.36 0.83 0.03 238 0.13 0.13 Logger#format_severity > > 2.36 0.86 0.03 238 0.13 0.21 MonitorMixin. > > mon_check_owner > > 2.36 0.89 0.03 952 0.03 0.03 Thread#critical= > > 2.36 0.92 0.03 238 0.13 0.55 Logger::Formatter#call > > 1.57 0.94 0.02 476 0.04 0.04 Array#shift > > 1.57 0.96 0.02 1060 0.02 0.02 Fixnum#* > > 1.57 0.98 0.02 238 0.08 0.08 Module#=== > > 1.57 1.00 0.02 238 0.08 0.08 IO#stat > > 1.57 1.02 0.02 87 0.23 0.23 IO#readline > > 1.57 1.04 0.02 476 0.04 0.04 Fixnum#> > > 1.57 1.06 0.02 965 0.02 0.02 Fixnum#+ > > 0.79 1.07 0.01 17 0.59 2.94 FileFormat:: > > WavFile#extraParams > > 0.79 1.08 0.01 238 0.04 0.04 Kernel.nil? > > 0.79 1.09 0.01 240 0.04 0.04 Time#initialize > > 0.79 1.10 0.01 44 0.23 0.23 IO#putc > > 0.79 1.11 0.01 34 0.29 0.29 FileFormat:: > > WavFile#fileSize > > 0.79 1.12 0.01 238 0.04 0.59 Logger#format_message > > 0.79 1.13 0.01 34 0.29 0.29 IO#read > > 0.79 1.14 0.01 17 0.59 0.59 FileFormat:: > > WavFile#readBytes > > 0.79 1.15 0.01 238 0.04 0.04 Time#usec > > 0.79 1.16 0.01 238 0.04 0.04 Kernel.block_given? > > 0.79 1.17 0.01 238 0.04 2.31 Logger::LogDevice#write > > 0.79 1.18 0.01 18 0.56 0.56 FileFormat:: > > WavFile#bitPerSample > > 0.79 1.19 0.01 34 0.29 1.47 FileFormat:: > > WavFile#subChunk2Size > > 0.79 1.20 0.01 238 0.04 0.13 MonitorMixin.mon_acquire > > 0.79 1.21 0.01 238 0.04 0.04 Fixnum#< > > 0.79 1.22 0.01 238 0.04 3.61 Logger#info > > 0.79 1.23 0.01 18 0.56 1.67 FileFormat:: > > WavFile#sampleRate > > 0.79 1.24 0.01 325 0.03 0.03 Kernel.== > > 0.79 1.25 0.01 238 0.04 0.04 File::Stat#size > > 0.79 1.26 0.01 240 0.04 0.08 Time#now > > 0.79 1.27 0.01 344 0.03 0.03 Fixnum#== > > 0.00 1.27 0.00 2 0.00 0.00 IO#sync= > > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > > WavFile#byteRate > > 0.00 1.27 0.00 18 0.00 0.00 Class#new > > 0.00 1.27 0.00 17 0.00 0.00 Array#to_s > > 0.00 1.27 0.00 1 0.00 0.00 FileFormat:: > > FileConcat#initialize > > 0.00 1.27 0.00 18 0.00 0.00 IO#to_io > > 0.00 1.27 0.00 35 0.00 0.00 FileFormat:: > > WavFile#audioFormat > > 0.00 1.27 0.00 238 0.00 0.08 Logger:: > Formatter#msg2str > > 0.00 1.27 0.00 238 0.00 0.00 String#[] > > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > > WavFile#openFile > > 0.00 1.27 0.00 28 0.00 0.00 Fixnum#<< > > 0.00 1.27 0.00 56 0.00 0.00 Fixnum#>> > > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > > LogDevice#create_logfile > > 0.00 1.27 0.00 298 0.00 0.00 IO#pos= > > 0.00 1.27 0.00 17 0.00 0.00 File#exist? > > 0.00 1.27 0.00 238 0.00 0.00 Thread#pass > > 0.00 1.27 0.00 238 0.00 0.00 NilClass#to_s > > 0.00 1.27 0.00 17 0.00 0.00 Array#<< > > 0.00 1.27 0.00 51 0.00 0.00 IO#eof? > > 0.00 1.27 0.00 9 0.00 2.22 FileFormat:: > > FileConcat#writeData > > 0.00 1.27 0.00 2 0.00 0.00 Time#to_s > > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#exist? > > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > > WavFile#chunkSize > > 0.00 1.27 0.00 238 0.00 0.00 Kernel.respond_to? > > 0.00 1.27 0.00 1 0.00 0.00 IO#new > > 0.00 1.27 0.00 238 0.00 0.00 Time#strftime > > 0.00 1.27 0.00 4 0.00 0.00 Fixnum#| > > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > > WavFile#blockAlign > > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > > WavFile#extraParamSize > > 0.00 1.27 0.00 6 0.00 0.00 FileTest.exist? > > 0.00 1.27 0.00 17 0.00 0.00 IO#open > > 0.00 1.27 0.00 355 0.00 0.00 Fixnum#- > > 0.00 1.27 0.00 239 0.00 0.00 Array#[] > > 0.00 1.27 0.00 18 0.00 1.67 FileFormat:: > > WavFile#numChannels > > 0.00 1.27 0.00 1 0.00 0.00 Array#size > > 0.00 1.27 0.00 20 0.00 0.00 IO#close > > 0.00 1.27 0.00 8 0.00 0.00 File#rename > > 0.00 1.27 0.00 87 0.00 0.00 String#index > > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > > WavFile#initialize > > 0.00 1.27 0.00 1 0.00 90.00 FileFormat:: > > FileConcat#concatFiles > > 0.00 1.27 0.00 2 0.00 0.00 Kernel.open > > 0.00 1.27 0.00 2 0.00 0.00 Integer#downto > > 0.00 1.27 0.00 4 0.00 0.00 FileFormat:: > > FileConcat#writeBytes > > 0.00 1.27 0.00 1 0.00 30.00 FileFormat:: > > FileConcat#concat_data_block > > 0.00 1.27 0.00 476 0.00 0.00 NilClass#nil? > > 0.00 1.27 0.00 20 0.00 0.00 File#initialize > > 0.00 1.27 0.00 478 0.00 0.00 String#% > > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > > LogDevice#add_log_header > > 0.00 1.27 0.00 18 0.00 2.78 FileFormat:: > > WavFile#subChunk1Size > > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > > LogDevice#shift_log_age > > 0.00 1.27 0.00 318 0.00 0.00 IO#write > > 0.00 1.27 0.00 238 0.00 0.00 String#<< > > 0.00 1.27 0.00 238 0.00 0.00 Kernel.is_a? > > 0.00 1.27 0.00 222 0.00 0.00 Fixnum#to_s > > 0.00 1.27 0.00 34 0.00 0.00 File#size > > 0.00 1.27 0.00 1 0.00 1270.00 #toplevel > > > > JRuby: > > % cumulative self self total > > time seconds seconds calls ms/call ms/call name > > 10.27 1.25 1.25 203 6.17 7.84 Integer#times > > 9.64 2.43 1.17 238 4.94 36.55 Logger#add > > 6.57 3.23 0.80 238 3.37 5.86 MonitorMixin.mon_exit > > 5.23 3.86 0.64 238 2.68 4.19 Logger:: > > Formatter#format_datetime > > 4.92 4.46 0.60 238 2.52 19.33 MonitorMixin. > > mon_synchronize > > 4.37 5.00 0.53 274 1.95 1.95 IO#write > > 4.12 5.50 0.50 238 2.11 5.62 Logger:: > > LogDevice#check_shift_log > > 3.36 5.91 0.41 238 1.72 3.01 MonitorMixin.mon_enter > > 3.23 6.30 0.39 497 0.79 1.52 Class#new > > 3.08 6.68 0.38 238 1.58 1.65 Logger:: > Formatter#msg2str > > 2.33 6.96 0.28 238 1.19 1.62 Logger#format_severity > > 2.33 7.24 0.28 238 1.19 37.75 Logger#info > > 2.21 7.51 0.27 238 1.13 7.65 Logger::Formatter#call > > 2.18 7.78 0.27 238 1.12 1.12 File::Stat#initialize > > 2.08 8.03 0.25 17 14.94 658.12 FileFormat:: > > WavFile#getInfo > > 1.71 8.24 0.21 238 0.88 1.00 MonitorMixin.mon_acquire > > 1.70 8.45 0.21 87 2.38 4.87 FileFormat:: > > WavFile#dataPos > > 1.62 8.65 0.20 177 1.12 10.50 FileFormat:: > > WavFile#readBigNum > > 1.51 8.83 0.18 478 0.38 0.55 String#% > > 1.44 9.01 0.18 238 0.74 8.39 Logger#format_message > > 1.40 9.18 0.17 476 0.36 0.36 NilClass#nil? > > 1.37 9.35 0.17 238 0.70 1.08 MonitorMixin.mon_release > > 1.32 9.51 0.16 238 0.68 0.68 Time#strftime > > 1.31 9.67 0.16 298 0.54 0.54 IO#pos= > > 1.23 9.82 0.15 915 0.16 0.16 FileFormat::WavFile#file > > 1.19 9.96 0.15 238 0.61 19.94 Logger::LogDevice#write > > 1.10 10.10 0.13 952 0.14 0.14 # Thread>#critical= > > 1.00 10.22 0.12 238 0.51 0.80 MonitorMixin. > > mon_check_owner > > 0.91 10.33 0.11 530 0.21 0.21 IO#getc > > 0.85 10.43 0.10 238 0.43 0.43 Kernel.is_a? > > 0.85 10.54 0.10 1060 0.10 0.10 Fixnum#* > > 0.83 10.64 0.10 239 0.42 0.42 Array#[] > > 0.81 10.74 0.10 476 0.21 0.21 Fixnum#> > > 0.75 10.83 0.09 476 0.19 0.19 Array#shift > > 0.72 10.91 0.09 965 0.09 0.09 Fixnum#+ > > 0.71 11.00 0.09 8 10.75 1494.63 Array#each > > 0.71 11.09 0.09 34 2.53 2.53 IO#read > > 0.66 11.17 0.08 238 0.34 2.50 File#stat > > 0.66 11.25 0.08 238 0.34 0.34 Time#usec > > 0.64 11.33 0.08 238 0.33 0.33 NilClass#to_s > > 0.62 11.40 0.08 238 0.32 0.32 Kernel.respond_to? > > 0.61 11.47 0.07 35 2.11 11.74 FileFormat:: > > WavFile#audioFormat > > 0.57 11.54 0.07 344 0.20 0.21 Fixnum#== > > 0.51 11.61 0.06 476 0.13 0.13 ##current > > 0.40 11.65 0.05 238 0.21 0.21 Fixnum#< > > 0.33 11.69 0.04 325 0.12 0.12 Kernel.== > > 0.32 11.73 0.04 17 2.29 5.71 FileFormat:: > WavFile#exist? > > 0.25 11.76 0.03 1 31.00 31.00 File#initialize > > 0.25 11.79 0.03 222 0.14 0.14 Fixnum#to_s > > 0.24 11.82 0.03 85 0.34 0.34 FileFormat:: > > WavFile#fileDir > > 0.21 11.85 0.02 238 0.11 0.11 Kernel.block_given? > > 0.20 11.87 0.02 240 0.10 0.10 Time#initialize > > 0.19 11.90 0.02 17 1.35 1.71 FileFormat:: > > WavFile#readBytes > > 0.19 11.92 0.02 238 0.10 0.10 ##pass > > 0.17 11.94 0.02 17 1.24 16.71 FileFormat:: > > WavFile#extraParamSize > > 0.15 11.96 0.02 17 1.06 1.94 FileFormat:: > > WavFile#openFile > > 0.15 11.98 0.02 238 0.08 0.08 Module#=== > > 0.14 11.99 0.02 355 0.05 0.05 Fixnum#- > > 0.13 12.01 0.02 34 0.47 23.35 FileFormat:: > > WavFile#subChunk2Size > > 0.13 12.02 0.02 87 0.18 0.18 IO#readline > > 0.10 12.04 0.01 18 0.67 16.67 FileFormat:: > > WavFile#bitPerSample > > 0.10 12.05 0.01 238 0.05 0.05 File::Stat#size > > 0.09 12.06 0.01 238 0.05 0.05 Kernel.nil? > > 0.08 12.07 0.01 1 10.00 801.00 FileFormat:: > > FileConcat#concatFiles > > 0.08 12.08 0.01 17 0.59 0.59 FileFormat:: > > WavFile#initialize > > 0.07 12.09 0.01 17 0.53 0.53 ##open > > 0.07 12.10 0.01 34 0.26 0.38 FileFormat:: > > WavFile#fileSize > > 0.07 12.11 0.01 18 0.44 5.67 FileFormat:: > > WavFile#sampleRate > > 0.07 12.11 0.01 87 0.09 0.09 String#index > > 0.05 12.12 0.01 9 0.67 4.78 FileFormat:: > > FileConcat#writeData > > 0.05 12.12 0.01 17 0.35 0.35 FileTest.exist? > > 0.04 12.13 0.01 2 2.50 8.00 Integer#downto > > 0.04 12.14 0.01 18 0.28 6.17 FileFormat:: > > WavFile#subChunk1Size > > 0.04 12.14 0.01 18 0.28 4.67 FileFormat:: > > WavFile#blockAlign > > 0.04 12.15 0.00 17 0.29 0.71 FileFormat:: > > WavFile#chunkSize > > 0.04 12.15 0.00 18 0.28 12.22 FileFormat:: > > WavFile#byteRate > > 0.03 12.15 0.00 34 0.12 0.12 FileTest.size > > 0.03 12.16 0.00 44 0.09 0.09 IO#putc > > 0.03 12.16 0.00 18 0.22 0.22 IO#to_io > > 0.02 12.17 0.00 17 0.18 5.82 FileFormat:: > > WavFile#extraParams > > 0.02 12.17 0.00 2 1.50 3.50 Logger:: > > LogDevice#create_logfile > > 0.02 12.17 0.00 20 0.15 0.15 IO#close > > 0.02 12.17 0.00 17 0.12 0.12 Array#<< > > 0.02 12.18 0.00 8 0.25 0.25 ##rename > > 0.02 12.18 0.00 28 0.07 0.07 Fixnum#<< > > 0.02 12.18 0.00 56 0.04 0.04 Fixnum#>> > > 0.02 12.18 0.00 18 0.11 8.94 FileFormat:: > > WavFile#numChannels > > 0.02 12.18 0.00 51 0.04 0.04 IO#eof > > 0.01 12.18 0.00 2 0.50 2.00 Logger:: > > LogDevice#add_log_header > > 0.01 12.18 0.00 2 0.50 0.50 Time#to_s > > 0.00 12.18 0.00 2 0.00 0.00 IO#sync= > > 0.00 12.18 0.00 2 0.00 12.50 Logger:: > > LogDevice#shift_log_age > > 0.00 12.18 0.00 6 0.00 0.00 ##exist? > > 0.00 12.18 0.00 1 0.00 0.00 Array#length > > 0.00 12.18 0.00 2 0.00 0.00 Kernel.open > > 0.00 12.18 0.00 1 0.00 31.00 FileFormat:: > > FileConcat#initialize > > 0.00 12.18 0.00 17 0.00 0.00 Array#to_s > > 0.00 12.18 0.00 1 0.00 209.00 FileFormat:: > > FileConcat#concat_data_block > > 0.00 12.18 0.00 4 0.00 0.00 Fixnum#| > > 0.00 12.18 0.00 4 0.00 1.00 FileFormat:: > > FileConcat#writeBytes > > 0.00 12.19 0.00 1 0.00 12187.00 #toplevel > > > > This performance of JRuby is rather bad. Reasons may come from: > > 1. JRuby is in nature very slow. We can not do anything to this > > 2. JRuby's startup time is longer than that of Ruby. I wonder this > > situation would be improved if we have had on in-memory JVM > > > > > > Peter K Chan wrote: > > Not anymore, Nate. :) > > > > JRuby WAS slow six months ago, but it has come a long way. Check this out: > > > > http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance.html > > > > Summary: In interpretive mode, JRuby is no more than 2x slower, and > > that's including JVM startup and lack of hotspot warm up. In > > unoptimized compiled mode, JRuby often beats C Ruby. I have been using > > JRuby in my project, and I haven't had any performance complaints > > since 2 months ago. > > > > Peter > > ________________________________________ > > From: chicagogroup-members-list-bounces at rubyforge.org [mailto: > > chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > > Sent: Tuesday, May 29, 2007 2:23 AM > > To: Chirb discussion list > > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > > > Peter, > > > > JRuby is slow. Try RJB (http://rjb.rubyforge.org/) > > > > Nate > > > > Peter K Chan wrote: > > Sure! I will be up for some Uger-hacking/feedback-taking (I also need to > > apply Colin's patch from a while ago and push it out). > > > > Hmm...maybe I should think of a lightning talk on JRuby or something. > > > > Peter > > > > -----Original Message----- > > From: chicagogroup-members-list-bounces at rubyforge.org > > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > > Evan Farrar > > Sent: Monday, May 28, 2007 5:51 PM > > To: Chirb discussion list > > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > > > Woohoo Lightning talks! I will definitely come with something. I also > > would like to call together a uger hacksession if Peter Chang is > > around for the meeting. > > > > On 5/28/07, Josh Cronemeyer wrote: > > > > Ok, nobody signed up for the talk and we are a week away from the next > > CHIRB. Soooo, unless anyone objects I think we should have another > > "lightning talk / code pit" session like the one last december. If > > > > you can > > > > prepare something that you can get through in 10 minutes or so, please > > > > do. > > > > Alternatively you can put out a request for a talk on a certain topic > > > > and > > > > perhaps that will inspire somebody. I'm mulling over a topic just to > > > > force > > > > myself to learn something new (Why's camping framework). But I make > > > > no > > > > promises :) Let's have fun with this and take advantage of the chance > > > > for > > > > all of us to talk. No pressure!!!! > > > > http://chirb.org/event/show/18 > > > > Josh Cronemeyer > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > > > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > > > _______________________________________________ > > ChicagoGroup-Members-List at rubyforge.org > > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070529/832b636b/attachment-0001.html From peter at oaktop.com Tue May 29 14:28:14 2007 From: peter at oaktop.com (Peter K Chan) Date: Tue, 29 May 2007 14:28:14 -0400 Subject: [Chirb] JRuby performance In-Reply-To: References: Message-ID: Josh, No and yes. JRuby internally represents ruby classes as IRubyObject, which is just a regular Java object, so no dynamical class loading is needed. However, this gets tricky when you try to compile Ruby to JVM byte code, since Ruby method can change and Java expects static typing. In that case, dynamic class loading will be needed. In addition, if you use the JIT JRuby compiler, it will need to generate classes on the fly as Ruby sources are compiled JIT'ly. The JRuby compiler is still in a very early stage. I believe that the Charlie is still hammering some of the dynamic class loading details out (i.e. decide if to pack each new ruby method in a class or to bundle them together). Peter ________________________________________ From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Josh Cronemeyer Sent: Tuesday, May 29, 2007 1:01 PM To: Chirb discussion list Subject: Re: [Chirb] JRuby performance Peter, I was wondering what you knew about how JRuby works. ?I would imagine there would be a fair amount of dynamic class loading since ruby objects are always open for modification. ?Is this the case? Josh Cronemeyer chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 12:55:33 PM: > Nate, > ? ?Josh has already brought up most of what I was going to reply to > you, but let me just highlight these factors, which may explain your > performance result: > > - Are you using a modern JVM, such as Sun 1.6.0, with hotspot/JIT compilation? > - Did you disable object space? (Makes a huge 20% - 40% difference, I > disable it in all my apps) > - Did you pull the latest trunk or at least RC version of JRuby? > - Did you turn on the JRuby AOT or JIT compiler? > - I think that JRuby's set_trace_func is slow; therefore, if you use > profile.rb, you may be incurring large profiling cost (actually, > set_trace_func isn't working in current JRuby compiler, so you must > have been running JRuby in pure interpretive mode). > > ? ? Also, keep in mind that the benchmark result I linked to include > JVM startup time. If you consider that the JVM takes a few seconds to > fully warm up, and most benchmark finishes in a few seconds, JRuby's > result is even more impressive. > > ? ?Don't take my word for it. Run your benchmark with the right > settings, and you can see for yourself. :) > > Peter From natebkirby at yahoo.com Tue May 29 20:31:57 2007 From: natebkirby at yahoo.com (Nate Kirby) Date: Wed, 30 May 2007 08:31:57 +0800 Subject: [Chirb] JRuby performance In-Reply-To: References: <465BF078.8050808@yahoo.com> Message-ID: <465CC5FD.7030505@yahoo.com> Peter, I actually had someone else do it. I will forward your suggestions along to them. I have had the impression in the past that individual vendors VMs were often faster than Suns for their platform. That is possibly in error, but in the late 90's it was not. Thanks, Nate Peter K Chan wrote: > Nate, > Josh has already brought up most of what I was going to reply to you, but let me just highlight these factors, which may explain your performance result: > > - Are you using a modern JVM, such as Sun 1.6.0, with hotspot/JIT compilation? > - Did you disable object space? (Makes a huge 20% - 40% difference, I disable it in all my apps) > - Did you pull the latest trunk or at least RC version of JRuby? > - Did you turn on the JRuby AOT or JIT compiler? > - I think that JRuby's set_trace_func is slow; therefore, if you use profile.rb, you may be incurring large profiling cost (actually, set_trace_func isn't working in current JRuby compiler, so you must have been running JRuby in pure interpretive mode). > > Also, keep in mind that the benchmark result I linked to include JVM startup time. If you consider that the JVM takes a few seconds to fully warm up, and most benchmark finishes in a few seconds, JRuby's result is even more impressive. > > Don't take my word for it. Run your benchmark with the right settings, and you can see for yourself. :) > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Josh Cronemeyer > Sent: Tuesday, May 29, 2007 11:11 AM > To: Chirb discussion list > Subject: [Chirb] JRuby performance > > > discussion moved from this thread: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Nate, > > I've heard alot of good stuff about jruby performance, not from just peter. > > >> [programmer at Mark ~]$ java --version >> java version "1.4.2" >> gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) >> > I think you should run your tests with a real JVM (like sun's implementation). You are using gij which is a java interpretor. GIJ is a part of the GCJ project. GCJ is a very different beast than sun's implementation. The idea behind GCJ is that java is compiled down to your specific platform's machine code. So they bypass the jvm all together. This sounds like it would be faster, but it really isn't for many things because sun's just in time compilation can actually compile the same code in different ways depending on context in order to optimize execution. I'm not sure if Jruby uses runtime code loading or generation (i wouldn't be surprised though). If that is the case GCJ is SUPER slow for those types of operations because that is when the gij interpreter kicks in. The interpreter is realizing no benefits from optimization or compilation. > > The short of it: I wouldn't call my tests definitive until I was using sun's jvm. > > Josh Cronemeyer > > chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 04:20:56 AM: > > >> Peter, >> >> I can take your word for it....or I can check the performance stats we >> just did a few weeks ago JRuby was 10x slower than ruby at the command >> line on a Fedora box. >> >> Nate >> >> STATS >> >> [programmer at Mark ~]$ java --version >> java version "1.4.2" >> gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) >> >> Copyright (C) 2006 Free Software Foundation, Inc. >> This is free software; see the source for copying conditions. There is NO >> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. >> >> I did not change the default JVM. I used the Ruby project >> concatenating wav files and profiler to see the performance data. This >> is the result: >> Ruby: >> % cumulative self self total >> time seconds seconds calls ms/call ms/call name >> 10.24 0.13 0.13 238 0.55 1.13 MonitorMixin.mon_exit >> 7.09 0.22 0.09 238 0.38 2.27 MonitorMixin.synchronize >> 6.30 0.30 0.08 238 0.34 3.57 Logger#add >> 5.51 0.37 0.07 238 0.29 0.34 Logger:: >> Formatter#format_datetime >> 4.72 0.43 0.06 17 3.53 68.82 FileFormat:: >> WavFile#getInfo >> 4.72 0.49 0.06 203 0.30 0.69 Integer#times >> 3.94 0.54 0.05 238 0.21 0.42 Logger:: >> LogDevice#check_shift_log >> 3.15 0.58 0.04 238 0.17 0.25 MonitorMixin.mon_release >> 3.15 0.62 0.04 238 0.17 0.34 MonitorMixin.mon_enter >> 2.36 0.65 0.03 256 0.12 0.12 String#+ >> 2.36 0.68 0.03 87 0.34 0.57 FileFormat:: >> WavFile#dataPos >> 2.36 0.71 0.03 177 0.17 0.85 FileFormat:: >> WavFile#readBigNum >> 2.36 0.74 0.03 530 0.06 0.06 IO#getc >> 2.36 0.77 0.03 8 3.75 155.00 Array#each >> 2.36 0.80 0.03 476 0.06 0.06 Thread#current >> 2.36 0.83 0.03 238 0.13 0.13 Logger#format_severity >> 2.36 0.86 0.03 238 0.13 0.21 MonitorMixin. >> mon_check_owner >> 2.36 0.89 0.03 952 0.03 0.03 Thread#critical= >> 2.36 0.92 0.03 238 0.13 0.55 Logger::Formatter#call >> 1.57 0.94 0.02 476 0.04 0.04 Array#shift >> 1.57 0.96 0.02 1060 0.02 0.02 Fixnum#* >> 1.57 0.98 0.02 238 0.08 0.08 Module#=== >> 1.57 1.00 0.02 238 0.08 0.08 IO#stat >> 1.57 1.02 0.02 87 0.23 0.23 IO#readline >> 1.57 1.04 0.02 476 0.04 0.04 Fixnum#> >> 1.57 1.06 0.02 965 0.02 0.02 Fixnum#+ >> 0.79 1.07 0.01 17 0.59 2.94 FileFormat:: >> WavFile#extraParams >> 0.79 1.08 0.01 238 0.04 0.04 Kernel.nil? >> 0.79 1.09 0.01 240 0.04 0.04 Time#initialize >> 0.79 1.10 0.01 44 0.23 0.23 IO#putc >> 0.79 1.11 0.01 34 0.29 0.29 FileFormat:: >> WavFile#fileSize >> 0.79 1.12 0.01 238 0.04 0.59 Logger#format_message >> 0.79 1.13 0.01 34 0.29 0.29 IO#read >> 0.79 1.14 0.01 17 0.59 0.59 FileFormat:: >> WavFile#readBytes >> 0.79 1.15 0.01 238 0.04 0.04 Time#usec >> 0.79 1.16 0.01 238 0.04 0.04 Kernel.block_given? >> 0.79 1.17 0.01 238 0.04 2.31 Logger::LogDevice#write >> 0.79 1.18 0.01 18 0.56 0.56 FileFormat:: >> WavFile#bitPerSample >> 0.79 1.19 0.01 34 0.29 1.47 FileFormat:: >> WavFile#subChunk2Size >> 0.79 1.20 0.01 238 0.04 0.13 MonitorMixin.mon_acquire >> 0.79 1.21 0.01 238 0.04 0.04 Fixnum#< >> 0.79 1.22 0.01 238 0.04 3.61 Logger#info >> 0.79 1.23 0.01 18 0.56 1.67 FileFormat:: >> WavFile#sampleRate >> 0.79 1.24 0.01 325 0.03 0.03 Kernel.== >> 0.79 1.25 0.01 238 0.04 0.04 File::Stat#size >> 0.79 1.26 0.01 240 0.04 0.08 Time#now >> 0.79 1.27 0.01 344 0.03 0.03 Fixnum#== >> 0.00 1.27 0.00 2 0.00 0.00 IO#sync= >> 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: >> WavFile#byteRate >> 0.00 1.27 0.00 18 0.00 0.00 Class#new >> 0.00 1.27 0.00 17 0.00 0.00 Array#to_s >> 0.00 1.27 0.00 1 0.00 0.00 FileFormat:: >> FileConcat#initialize >> 0.00 1.27 0.00 18 0.00 0.00 IO#to_io >> 0.00 1.27 0.00 35 0.00 0.00 FileFormat:: >> WavFile#audioFormat >> 0.00 1.27 0.00 238 0.00 0.08 Logger::Formatter#msg2str >> 0.00 1.27 0.00 238 0.00 0.00 String#[] >> 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: >> WavFile#openFile >> 0.00 1.27 0.00 28 0.00 0.00 Fixnum#<< >> 0.00 1.27 0.00 56 0.00 0.00 Fixnum#>> >> 0.00 1.27 0.00 2 0.00 0.00 Logger:: >> LogDevice#create_logfile >> 0.00 1.27 0.00 298 0.00 0.00 IO#pos= >> 0.00 1.27 0.00 17 0.00 0.00 File#exist? >> 0.00 1.27 0.00 238 0.00 0.00 Thread#pass >> 0.00 1.27 0.00 238 0.00 0.00 NilClass#to_s >> 0.00 1.27 0.00 17 0.00 0.00 Array#<< >> 0.00 1.27 0.00 51 0.00 0.00 IO#eof? >> 0.00 1.27 0.00 9 0.00 2.22 FileFormat:: >> FileConcat#writeData >> 0.00 1.27 0.00 2 0.00 0.00 Time#to_s >> 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#exist? >> 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: >> WavFile#chunkSize >> 0.00 1.27 0.00 238 0.00 0.00 Kernel.respond_to? >> 0.00 1.27 0.00 1 0.00 0.00 IO#new >> 0.00 1.27 0.00 238 0.00 0.00 Time#strftime >> 0.00 1.27 0.00 4 0.00 0.00 Fixnum#| >> 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: >> WavFile#blockAlign >> 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: >> WavFile#extraParamSize >> 0.00 1.27 0.00 6 0.00 0.00 FileTest.exist? >> 0.00 1.27 0.00 17 0.00 0.00 IO#open >> 0.00 1.27 0.00 355 0.00 0.00 Fixnum#- >> 0.00 1.27 0.00 239 0.00 0.00 Array#[] >> 0.00 1.27 0.00 18 0.00 1.67 FileFormat:: >> WavFile#numChannels >> 0.00 1.27 0.00 1 0.00 0.00 Array#size >> 0.00 1.27 0.00 20 0.00 0.00 IO#close >> 0.00 1.27 0.00 8 0.00 0.00 File#rename >> 0.00 1.27 0.00 87 0.00 0.00 String#index >> 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: >> WavFile#initialize >> 0.00 1.27 0.00 1 0.00 90.00 FileFormat:: >> FileConcat#concatFiles >> 0.00 1.27 0.00 2 0.00 0.00 Kernel.open >> 0.00 1.27 0.00 2 0.00 0.00 Integer#downto >> 0.00 1.27 0.00 4 0.00 0.00 FileFormat:: >> FileConcat#writeBytes >> 0.00 1.27 0.00 1 0.00 30.00 FileFormat:: >> FileConcat#concat_data_block >> 0.00 1.27 0.00 476 0.00 0.00 NilClass#nil? >> 0.00 1.27 0.00 20 0.00 0.00 File#initialize >> 0.00 1.27 0.00 478 0.00 0.00 String#% >> 0.00 1.27 0.00 2 0.00 0.00 Logger:: >> LogDevice#add_log_header >> 0.00 1.27 0.00 18 0.00 2.78 FileFormat:: >> WavFile#subChunk1Size >> 0.00 1.27 0.00 2 0.00 0.00 Logger:: >> LogDevice#shift_log_age >> 0.00 1.27 0.00 318 0.00 0.00 IO#write >> 0.00 1.27 0.00 238 0.00 0.00 String#<< >> 0.00 1.27 0.00 238 0.00 0.00 Kernel.is_a? >> 0.00 1.27 0.00 222 0.00 0.00 Fixnum#to_s >> 0.00 1.27 0.00 34 0.00 0.00 File#size >> 0.00 1.27 0.00 1 0.00 1270.00 #toplevel >> >> JRuby: >> % cumulative self self total >> time seconds seconds calls ms/call ms/call name >> 10.27 1.25 1.25 203 6.17 7.84 Integer#times >> 9.64 2.43 1.17 238 4.94 36.55 Logger#add >> 6.57 3.23 0.80 238 3.37 5.86 MonitorMixin.mon_exit >> 5.23 3.86 0.64 238 2.68 4.19 Logger:: >> Formatter#format_datetime >> 4.92 4.46 0.60 238 2.52 19.33 MonitorMixin. >> mon_synchronize >> 4.37 5.00 0.53 274 1.95 1.95 IO#write >> 4.12 5.50 0.50 238 2.11 5.62 Logger:: >> LogDevice#check_shift_log >> 3.36 5.91 0.41 238 1.72 3.01 MonitorMixin.mon_enter >> 3.23 6.30 0.39 497 0.79 1.52 Class#new >> 3.08 6.68 0.38 238 1.58 1.65 Logger::Formatter#msg2str >> 2.33 6.96 0.28 238 1.19 1.62 Logger#format_severity >> 2.33 7.24 0.28 238 1.19 37.75 Logger#info >> 2.21 7.51 0.27 238 1.13 7.65 Logger::Formatter#call >> 2.18 7.78 0.27 238 1.12 1.12 File::Stat#initialize >> 2.08 8.03 0.25 17 14.94 658.12 FileFormat:: >> WavFile#getInfo >> 1.71 8.24 0.21 238 0.88 1.00 MonitorMixin.mon_acquire >> 1.70 8.45 0.21 87 2.38 4.87 FileFormat:: >> WavFile#dataPos >> 1.62 8.65 0.20 177 1.12 10.50 FileFormat:: >> WavFile#readBigNum >> 1.51 8.83 0.18 478 0.38 0.55 String#% >> 1.44 9.01 0.18 238 0.74 8.39 Logger#format_message >> 1.40 9.18 0.17 476 0.36 0.36 NilClass#nil? >> 1.37 9.35 0.17 238 0.70 1.08 MonitorMixin.mon_release >> 1.32 9.51 0.16 238 0.68 0.68 Time#strftime >> 1.31 9.67 0.16 298 0.54 0.54 IO#pos= >> 1.23 9.82 0.15 915 0.16 0.16 FileFormat::WavFile#file >> 1.19 9.96 0.15 238 0.61 19.94 Logger::LogDevice#write >> 1.10 10.10 0.13 952 0.14 0.14 ##critical= >> 1.00 10.22 0.12 238 0.51 0.80 MonitorMixin. >> mon_check_owner >> 0.91 10.33 0.11 530 0.21 0.21 IO#getc >> 0.85 10.43 0.10 238 0.43 0.43 Kernel.is_a? >> 0.85 10.54 0.10 1060 0.10 0.10 Fixnum#* >> 0.83 10.64 0.10 239 0.42 0.42 Array#[] >> 0.81 10.74 0.10 476 0.21 0.21 Fixnum#> >> 0.75 10.83 0.09 476 0.19 0.19 Array#shift >> 0.72 10.91 0.09 965 0.09 0.09 Fixnum#+ >> 0.71 11.00 0.09 8 10.75 1494.63 Array#each >> 0.71 11.09 0.09 34 2.53 2.53 IO#read >> 0.66 11.17 0.08 238 0.34 2.50 File#stat >> 0.66 11.25 0.08 238 0.34 0.34 Time#usec >> 0.64 11.33 0.08 238 0.33 0.33 NilClass#to_s >> 0.62 11.40 0.08 238 0.32 0.32 Kernel.respond_to? >> 0.61 11.47 0.07 35 2.11 11.74 FileFormat:: >> WavFile#audioFormat >> 0.57 11.54 0.07 344 0.20 0.21 Fixnum#== >> 0.51 11.61 0.06 476 0.13 0.13 ##current >> 0.40 11.65 0.05 238 0.21 0.21 Fixnum#< >> 0.33 11.69 0.04 325 0.12 0.12 Kernel.== >> 0.32 11.73 0.04 17 2.29 5.71 FileFormat::WavFile#exist? >> 0.25 11.76 0.03 1 31.00 31.00 File#initialize >> 0.25 11.79 0.03 222 0.14 0.14 Fixnum#to_s >> 0.24 11.82 0.03 85 0.34 0.34 FileFormat:: >> WavFile#fileDir >> 0.21 11.85 0.02 238 0.11 0.11 Kernel.block_given? >> 0.20 11.87 0.02 240 0.10 0.10 Time#initialize >> 0.19 11.90 0.02 17 1.35 1.71 FileFormat:: >> WavFile#readBytes >> 0.19 11.92 0.02 238 0.10 0.10 ##pass >> 0.17 11.94 0.02 17 1.24 16.71 FileFormat:: >> WavFile#extraParamSize >> 0.15 11.96 0.02 17 1.06 1.94 FileFormat:: >> WavFile#openFile >> 0.15 11.98 0.02 238 0.08 0.08 Module#=== >> 0.14 11.99 0.02 355 0.05 0.05 Fixnum#- >> 0.13 12.01 0.02 34 0.47 23.35 FileFormat:: >> WavFile#subChunk2Size >> 0.13 12.02 0.02 87 0.18 0.18 IO#readline >> 0.10 12.04 0.01 18 0.67 16.67 FileFormat:: >> WavFile#bitPerSample >> 0.10 12.05 0.01 238 0.05 0.05 File::Stat#size >> 0.09 12.06 0.01 238 0.05 0.05 Kernel.nil? >> 0.08 12.07 0.01 1 10.00 801.00 FileFormat:: >> FileConcat#concatFiles >> 0.08 12.08 0.01 17 0.59 0.59 FileFormat:: >> WavFile#initialize >> 0.07 12.09 0.01 17 0.53 0.53 ##open >> 0.07 12.10 0.01 34 0.26 0.38 FileFormat:: >> WavFile#fileSize >> 0.07 12.11 0.01 18 0.44 5.67 FileFormat:: >> WavFile#sampleRate >> 0.07 12.11 0.01 87 0.09 0.09 String#index >> 0.05 12.12 0.01 9 0.67 4.78 FileFormat:: >> FileConcat#writeData >> 0.05 12.12 0.01 17 0.35 0.35 FileTest.exist? >> 0.04 12.13 0.01 2 2.50 8.00 Integer#downto >> 0.04 12.14 0.01 18 0.28 6.17 FileFormat:: >> WavFile#subChunk1Size >> 0.04 12.14 0.01 18 0.28 4.67 FileFormat:: >> WavFile#blockAlign >> 0.04 12.15 0.00 17 0.29 0.71 FileFormat:: >> WavFile#chunkSize >> 0.04 12.15 0.00 18 0.28 12.22 FileFormat:: >> WavFile#byteRate >> 0.03 12.15 0.00 34 0.12 0.12 FileTest.size >> 0.03 12.16 0.00 44 0.09 0.09 IO#putc >> 0.03 12.16 0.00 18 0.22 0.22 IO#to_io >> 0.02 12.17 0.00 17 0.18 5.82 FileFormat:: >> WavFile#extraParams >> 0.02 12.17 0.00 2 1.50 3.50 Logger:: >> LogDevice#create_logfile >> 0.02 12.17 0.00 20 0.15 0.15 IO#close >> 0.02 12.17 0.00 17 0.12 0.12 Array#<< >> 0.02 12.18 0.00 8 0.25 0.25 ##rename >> 0.02 12.18 0.00 28 0.07 0.07 Fixnum#<< >> 0.02 12.18 0.00 56 0.04 0.04 Fixnum#>> >> 0.02 12.18 0.00 18 0.11 8.94 FileFormat:: >> WavFile#numChannels >> 0.02 12.18 0.00 51 0.04 0.04 IO#eof >> 0.01 12.18 0.00 2 0.50 2.00 Logger:: >> LogDevice#add_log_header >> 0.01 12.18 0.00 2 0.50 0.50 Time#to_s >> 0.00 12.18 0.00 2 0.00 0.00 IO#sync= >> 0.00 12.18 0.00 2 0.00 12.50 Logger:: >> LogDevice#shift_log_age >> 0.00 12.18 0.00 6 0.00 0.00 ##exist? >> 0.00 12.18 0.00 1 0.00 0.00 Array#length >> 0.00 12.18 0.00 2 0.00 0.00 Kernel.open >> 0.00 12.18 0.00 1 0.00 31.00 FileFormat:: >> FileConcat#initialize >> 0.00 12.18 0.00 17 0.00 0.00 Array#to_s >> 0.00 12.18 0.00 1 0.00 209.00 FileFormat:: >> FileConcat#concat_data_block >> 0.00 12.18 0.00 4 0.00 0.00 Fixnum#| >> 0.00 12.18 0.00 4 0.00 1.00 FileFormat:: >> FileConcat#writeBytes >> 0.00 12.19 0.00 1 0.00 12187.00 #toplevel >> >> This performance of JRuby is rather bad. Reasons may come from: >> 1. JRuby is in nature very slow. We can not do anything to this >> 2. JRuby's startup time is longer than that of Ruby. I wonder this >> situation would be improved if we have had on in-memory JVM >> >> >> Peter K Chan wrote: >> Not anymore, Nate. :) >> >> JRuby WAS slow six months ago, but it has come a long way. Check this out: >> >> http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance.html >> >> Summary: In interpretive mode, JRuby is no more than 2x slower, and >> that's including JVM startup and lack of hotspot warm up. In >> unoptimized compiled mode, JRuby often beats C Ruby. I have been using >> JRuby in my project, and I haven't had any performance complaints >> since 2 months ago. >> >> Peter >> ________________________________________ >> From: chicagogroup-members-list-bounces at rubyforge.org [mailto: >> chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby >> Sent: Tuesday, May 29, 2007 2:23 AM >> To: Chirb discussion list >> Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t >> >> Peter, >> >> JRuby is slow. Try RJB (http://rjb.rubyforge.org/) >> >> Nate >> >> Peter K Chan wrote: >> Sure! I will be up for some Uger-hacking/feedback-taking (I also need to >> apply Colin's patch from a while ago and push it out). >> >> Hmm...maybe I should think of a lightning talk on JRuby or something. >> >> Peter >> >> -----Original Message----- >> From: chicagogroup-members-list-bounces at rubyforge.org >> [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of >> Evan Farrar >> Sent: Monday, May 28, 2007 5:51 PM >> To: Chirb discussion list >> Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t >> >> Woohoo Lightning talks! I will definitely come with something. I also >> would like to call together a uger hacksession if Peter Chang is >> around for the meeting. >> >> On 5/28/07, Josh Cronemeyer wrote: >> >> Ok, nobody signed up for the talk and we are a week away from the next >> CHIRB. Soooo, unless anyone objects I think we should have another >> "lightning talk / code pit" session like the one last december. If >> >> you can >> >> prepare something that you can get through in 10 minutes or so, please >> >> do. >> >> Alternatively you can put out a request for a talk on a certain topic >> >> and >> >> perhaps that will inspire somebody. I'm mulling over a topic just to >> >> force >> >> myself to learn something new (Why's camping framework). But I make >> >> no >> >> promises :) Let's have fun with this and take advantage of the chance >> >> for >> >> all of us to talk. No pressure!!!! >> >> http://chirb.org/event/show/18 >> >> Josh Cronemeyer >> _______________________________________________ >> ChicagoGroup-Members-List at rubyforge.org >> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list >> >> >> _______________________________________________ >> ChicagoGroup-Members-List at rubyforge.org >> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list >> _______________________________________________ >> ChicagoGroup-Members-List at rubyforge.org >> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list >> >> >> >> _______________________________________________ >> ChicagoGroup-Members-List at rubyforge.org >> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list >> >> >> _______________________________________________ >> ChicagoGroup-Members-List at rubyforge.org >> http://rubyforge.org/mailman/listinfo/chicagogroup-members-list >> > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070530/7462b94f/attachment-0001.html From peter at oaktop.com Tue May 29 21:11:35 2007 From: peter at oaktop.com (Peter K Chan) Date: Tue, 29 May 2007 21:11:35 -0400 Subject: [Chirb] JRuby performance In-Reply-To: <465CC5FD.7030505@yahoo.com> References: <465BF078.8050808@yahoo.com> <465CC5FD.7030505@yahoo.com> Message-ID: Sure, Nate. I do concede that JRuby is not yet a Ruby drop in replacement, at least not for running small scripts. It takes only 5 minutes to tweak the performance, but it is still 5 minutes more than C Ruby. Where JRuby really shines is in Java integration and scalability (e.g. running multiple rails instances within a single JVM, connecting to a JDBC database). I would be very interested in seeing what kind of performance you get for your evaluation. Peter ________________________________________ From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby Sent: Tuesday, May 29, 2007 7:32 PM To: Chirb discussion list Subject: Re: [Chirb] JRuby performance Peter, I actually had someone else do it.? I will forward your suggestions along to them.? I have had the impression in the past that individual vendors VMs were often faster than Suns for their platform.? That is possibly in error, but in the late 90's it was not. Thanks, Nate Peter K Chan wrote: Nate, Josh has already brought up most of what I was going to reply to you, but let me just highlight these factors, which may explain your performance result: - Are you using a modern JVM, such as Sun 1.6.0, with hotspot/JIT compilation? - Did you disable object space? (Makes a huge 20% - 40% difference, I disable it in all my apps) - Did you pull the latest trunk or at least RC version of JRuby? - Did you turn on the JRuby AOT or JIT compiler? - I think that JRuby's set_trace_func is slow; therefore, if you use profile.rb, you may be incurring large profiling cost (actually, set_trace_func isn't working in current JRuby compiler, so you must have been running JRuby in pure interpretive mode). Also, keep in mind that the benchmark result I linked to include JVM startup time. If you consider that the JVM takes a few seconds to fully warm up, and most benchmark finishes in a few seconds, JRuby's result is even more impressive. Don't take my word for it. Run your benchmark with the right settings, and you can see for yourself. :) Peter ________________________________________ From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Josh Cronemeyer Sent: Tuesday, May 29, 2007 11:11 AM To: Chirb discussion list Subject: [Chirb] JRuby performance discussion moved from this thread: Re: [Chirb] time to rsvp for the mystery meeting! W00t Nate, I've heard alot of good stuff about jruby performance, not from just peter. ? [programmer at Mark ~]$ java --version java version "1.4.2" gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) I think you should run your tests with a real JVM (like sun's implementation). ?You are using gij which is a java interpretor. ?GIJ is a part of the GCJ project. ?GCJ is a very different beast than sun's implementation. ?The idea behind GCJ is that java is compiled down to your specific platform's machine code. ?So they bypass the jvm all together. ?This sounds like it would be faster, but it really isn't for many things because sun's just in time compilation can actually compile the same code in different ways depending on context in order to optimize execution. ?I'm not sure if Jruby uses runtime code loading or generation (i wouldn't be surprised though). ?If that is the case GCJ is SUPER slow for those types of operations because that is when the gij interpreter kicks in. ?The interpreter is realizing no benefits from optimization or compilation. ? The short of it: I wouldn't call my tests definitive until I was using sun's jvm. Josh Cronemeyer chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 04:20:56 AM: Peter, I can take your word for it....or I can check the performance stats we just did a few weeks ago JRuby was 10x slower than ruby at the command line on a Fedora box. Nate STATS [programmer at Mark ~]$ java --version java version "1.4.2" gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. ?There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. I did not change the default JVM. I used the Ruby project concatenating wav files and profiler to see the performance data. This is the result: Ruby: ? % ? cumulative ? self ? ? ? ? ? ? ?self ? ? total ?time ? seconds ? seconds ? ?calls ?ms/call ?ms/call ?name ?10.24 ? ? 0.13 ? ? ?0.13 ? ? ?238 ? ? 0.55 ? ? 1.13 ?MonitorMixin.mon_exit ? 7.09 ? ? 0.22 ? ? ?0.09 ? ? ?238 ? ? 0.38 ? ? 2.27 ?MonitorMixin.synchronize ? 6.30 ? ? 0.30 ? ? ?0.08 ? ? ?238 ? ? 0.34 ? ? 3.57 ?Logger#add ? 5.51 ? ? 0.37 ? ? ?0.07 ? ? ?238 ? ? 0.29 ? ? 0.34 ?Logger:: Formatter#format_datetime ? 4.72 ? ? 0.43 ? ? ?0.06 ? ? ? 17 ? ? 3.53 ? ?68.82 ?FileFormat:: WavFile#getInfo ? 4.72 ? ? 0.49 ? ? ?0.06 ? ? ?203 ? ? 0.30 ? ? 0.69 ?Integer#times ? 3.94 ? ? 0.54 ? ? ?0.05 ? ? ?238 ? ? 0.21 ? ? 0.42 ?Logger:: LogDevice#check_shift_log ? 3.15 ? ? 0.58 ? ? ?0.04 ? ? ?238 ? ? 0.17 ? ? 0.25 ?MonitorMixin.mon_release ? 3.15 ? ? 0.62 ? ? ?0.04 ? ? ?238 ? ? 0.17 ? ? 0.34 ?MonitorMixin.mon_enter ? 2.36 ? ? 0.65 ? ? ?0.03 ? ? ?256 ? ? 0.12 ? ? 0.12 ?String#+ ? 2.36 ? ? 0.68 ? ? ?0.03 ? ? ? 87 ? ? 0.34 ? ? 0.57 ?FileFormat:: WavFile#dataPos ? 2.36 ? ? 0.71 ? ? ?0.03 ? ? ?177 ? ? 0.17 ? ? 0.85 ?FileFormat:: WavFile#readBigNum ? 2.36 ? ? 0.74 ? ? ?0.03 ? ? ?530 ? ? 0.06 ? ? 0.06 ?IO#getc ? 2.36 ? ? 0.77 ? ? ?0.03 ? ? ? ?8 ? ? 3.75 ? 155.00 ?Array#each ? 2.36 ? ? 0.80 ? ? ?0.03 ? ? ?476 ? ? 0.06 ? ? 0.06 ?Thread#current ? 2.36 ? ? 0.83 ? ? ?0.03 ? ? ?238 ? ? 0.13 ? ? 0.13 ?Logger#format_severity ? 2.36 ? ? 0.86 ? ? ?0.03 ? ? ?238 ? ? 0.13 ? ? 0.21 ?MonitorMixin. mon_check_owner ? 2.36 ? ? 0.89 ? ? ?0.03 ? ? ?952 ? ? 0.03 ? ? 0.03 ?Thread#critical= ? 2.36 ? ? 0.92 ? ? ?0.03 ? ? ?238 ? ? 0.13 ? ? 0.55 ?Logger::Formatter#call ? 1.57 ? ? 0.94 ? ? ?0.02 ? ? ?476 ? ? 0.04 ? ? 0.04 ?Array#shift ? 1.57 ? ? 0.96 ? ? ?0.02 ? ? 1060 ? ? 0.02 ? ? 0.02 ?Fixnum#* ? 1.57 ? ? 0.98 ? ? ?0.02 ? ? ?238 ? ? 0.08 ? ? 0.08 ?Module#=== ? 1.57 ? ? 1.00 ? ? ?0.02 ? ? ?238 ? ? 0.08 ? ? 0.08 ?IO#stat ? 1.57 ? ? 1.02 ? ? ?0.02 ? ? ? 87 ? ? 0.23 ? ? 0.23 ?IO#readline ? 1.57 ? ? 1.04 ? ? ?0.02 ? ? ?476 ? ? 0.04 ? ? 0.04 ?Fixnum#> ? 1.57 ? ? 1.06 ? ? ?0.02 ? ? ?965 ? ? 0.02 ? ? 0.02 ?Fixnum#+ ? 0.79 ? ? 1.07 ? ? ?0.01 ? ? ? 17 ? ? 0.59 ? ? 2.94 ?FileFormat:: WavFile#extraParams ? 0.79 ? ? 1.08 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?Kernel.nil? ? 0.79 ? ? 1.09 ? ? ?0.01 ? ? ?240 ? ? 0.04 ? ? 0.04 ?Time#initialize ? 0.79 ? ? 1.10 ? ? ?0.01 ? ? ? 44 ? ? 0.23 ? ? 0.23 ?IO#putc ? 0.79 ? ? 1.11 ? ? ?0.01 ? ? ? 34 ? ? 0.29 ? ? 0.29 ?FileFormat:: WavFile#fileSize ? 0.79 ? ? 1.12 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.59 ?Logger#format_message ? 0.79 ? ? 1.13 ? ? ?0.01 ? ? ? 34 ? ? 0.29 ? ? 0.29 ?IO#read ? 0.79 ? ? 1.14 ? ? ?0.01 ? ? ? 17 ? ? 0.59 ? ? 0.59 ?FileFormat:: WavFile#readBytes ? 0.79 ? ? 1.15 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?Time#usec ? 0.79 ? ? 1.16 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?Kernel.block_given? ? 0.79 ? ? 1.17 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 2.31 ?Logger::LogDevice#write ? 0.79 ? ? 1.18 ? ? ?0.01 ? ? ? 18 ? ? 0.56 ? ? 0.56 ?FileFormat:: WavFile#bitPerSample ? 0.79 ? ? 1.19 ? ? ?0.01 ? ? ? 34 ? ? 0.29 ? ? 1.47 ?FileFormat:: WavFile#subChunk2Size ? 0.79 ? ? 1.20 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.13 ?MonitorMixin.mon_acquire ? 0.79 ? ? 1.21 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?Fixnum#< ? 0.79 ? ? 1.22 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 3.61 ?Logger#info ? 0.79 ? ? 1.23 ? ? ?0.01 ? ? ? 18 ? ? 0.56 ? ? 1.67 ?FileFormat:: WavFile#sampleRate ? 0.79 ? ? 1.24 ? ? ?0.01 ? ? ?325 ? ? 0.03 ? ? 0.03 ?Kernel.== ? 0.79 ? ? 1.25 ? ? ?0.01 ? ? ?238 ? ? 0.04 ? ? 0.04 ?File::Stat#size ? 0.79 ? ? 1.26 ? ? ?0.01 ? ? ?240 ? ? 0.04 ? ? 0.08 ?Time#now ? 0.79 ? ? 1.27 ? ? ?0.01 ? ? ?344 ? ? 0.03 ? ? 0.03 ?Fixnum#== ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?IO#sync= ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 0.56 ?FileFormat:: WavFile#byteRate ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 0.00 ?Class#new ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?Array#to_s ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ? 0.00 ?FileFormat:: FileConcat#initialize ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 0.00 ?IO#to_io ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 35 ? ? 0.00 ? ? 0.00 ?FileFormat:: WavFile#audioFormat ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.08 ?Logger::Formatter#msg2str ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?String#[] ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat:: WavFile#openFile ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 28 ? ? 0.00 ? ? 0.00 ?Fixnum#<< ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 56 ? ? 0.00 ? ? 0.00 ?Fixnum#>> ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Logger:: LogDevice#create_logfile ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?298 ? ? 0.00 ? ? 0.00 ?IO#pos= ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?File#exist? ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?Thread#pass ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?NilClass#to_s ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?Array#<< ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 51 ? ? 0.00 ? ? 0.00 ?IO#eof? ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?9 ? ? 0.00 ? ? 2.22 ?FileFormat:: FileConcat#writeData ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Time#to_s ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat::WavFile#exist? ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat:: WavFile#chunkSize ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?Kernel.respond_to? ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ? 0.00 ?IO#new ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?Time#strftime ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?4 ? ? 0.00 ? ? 0.00 ?Fixnum#| ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 0.56 ?FileFormat:: WavFile#blockAlign ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat:: WavFile#extraParamSize ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?6 ? ? 0.00 ? ? 0.00 ?FileTest.exist? ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?IO#open ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?355 ? ? 0.00 ? ? 0.00 ?Fixnum#- ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?239 ? ? 0.00 ? ? 0.00 ?Array#[] ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 1.67 ?FileFormat:: WavFile#numChannels ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ? 0.00 ?Array#size ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 20 ? ? 0.00 ? ? 0.00 ?IO#close ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?8 ? ? 0.00 ? ? 0.00 ?File#rename ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 87 ? ? 0.00 ? ? 0.00 ?String#index ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?FileFormat:: WavFile#initialize ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ?90.00 ?FileFormat:: FileConcat#concatFiles ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Kernel.open ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Integer#downto ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?4 ? ? 0.00 ? ? 0.00 ?FileFormat:: FileConcat#writeBytes ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ?30.00 ?FileFormat:: FileConcat#concat_data_block ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?476 ? ? 0.00 ? ? 0.00 ?NilClass#nil? ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 20 ? ? 0.00 ? ? 0.00 ?File#initialize ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?478 ? ? 0.00 ? ? 0.00 ?String#% ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Logger:: LogDevice#add_log_header ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 18 ? ? 0.00 ? ? 2.78 ?FileFormat:: WavFile#subChunk1Size ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Logger:: LogDevice#shift_log_age ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?318 ? ? 0.00 ? ? 0.00 ?IO#write ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?String#<< ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?238 ? ? 0.00 ? ? 0.00 ?Kernel.is_a? ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ?222 ? ? 0.00 ? ? 0.00 ?Fixnum#to_s ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? 34 ? ? 0.00 ? ? 0.00 ?File#size ? 0.00 ? ? 1.27 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ?1270.00 ?#toplevel JRuby: % ? cumulative ? self ? ? ? ? ? ? ?self ? ? total ?time ? seconds ? seconds ? ?calls ?ms/call ?ms/call ?name ?10.27 ? ? 1.25 ? ? ?1.25 ? ? ?203 ? ? 6.17 ? ? 7.84 ?Integer#times ? 9.64 ? ? 2.43 ? ? ?1.17 ? ? ?238 ? ? 4.94 ? ?36.55 ?Logger#add ? 6.57 ? ? 3.23 ? ? ?0.80 ? ? ?238 ? ? 3.37 ? ? 5.86 ?MonitorMixin.mon_exit ? 5.23 ? ? 3.86 ? ? ?0.64 ? ? ?238 ? ? 2.68 ? ? 4.19 ?Logger:: Formatter#format_datetime ? 4.92 ? ? 4.46 ? ? ?0.60 ? ? ?238 ? ? 2.52 ? ?19.33 ?MonitorMixin. mon_synchronize ? 4.37 ? ? 5.00 ? ? ?0.53 ? ? ?274 ? ? 1.95 ? ? 1.95 ?IO#write ? 4.12 ? ? 5.50 ? ? ?0.50 ? ? ?238 ? ? 2.11 ? ? 5.62 ?Logger:: LogDevice#check_shift_log ? 3.36 ? ? 5.91 ? ? ?0.41 ? ? ?238 ? ? 1.72 ? ? 3.01 ?MonitorMixin.mon_enter ? 3.23 ? ? 6.30 ? ? ?0.39 ? ? ?497 ? ? 0.79 ? ? 1.52 ?Class#new ? 3.08 ? ? 6.68 ? ? ?0.38 ? ? ?238 ? ? 1.58 ? ? 1.65 ?Logger::Formatter#msg2str ? 2.33 ? ? 6.96 ? ? ?0.28 ? ? ?238 ? ? 1.19 ? ? 1.62 ?Logger#format_severity ? 2.33 ? ? 7.24 ? ? ?0.28 ? ? ?238 ? ? 1.19 ? ?37.75 ?Logger#info ? 2.21 ? ? 7.51 ? ? ?0.27 ? ? ?238 ? ? 1.13 ? ? 7.65 ?Logger::Formatter#call ? 2.18 ? ? 7.78 ? ? ?0.27 ? ? ?238 ? ? 1.12 ? ? 1.12 ?File::Stat#initialize ? 2.08 ? ? 8.03 ? ? ?0.25 ? ? ? 17 ? ?14.94 ? 658.12 ?FileFormat:: WavFile#getInfo ? 1.71 ? ? 8.24 ? ? ?0.21 ? ? ?238 ? ? 0.88 ? ? 1.00 ?MonitorMixin.mon_acquire ? 1.70 ? ? 8.45 ? ? ?0.21 ? ? ? 87 ? ? 2.38 ? ? 4.87 ?FileFormat:: WavFile#dataPos ? 1.62 ? ? 8.65 ? ? ?0.20 ? ? ?177 ? ? 1.12 ? ?10.50 ?FileFormat:: WavFile#readBigNum ? 1.51 ? ? 8.83 ? ? ?0.18 ? ? ?478 ? ? 0.38 ? ? 0.55 ?String#% ? 1.44 ? ? 9.01 ? ? ?0.18 ? ? ?238 ? ? 0.74 ? ? 8.39 ?Logger#format_message ? 1.40 ? ? 9.18 ? ? ?0.17 ? ? ?476 ? ? 0.36 ? ? 0.36 ?NilClass#nil? ? 1.37 ? ? 9.35 ? ? ?0.17 ? ? ?238 ? ? 0.70 ? ? 1.08 ?MonitorMixin.mon_release ? 1.32 ? ? 9.51 ? ? ?0.16 ? ? ?238 ? ? 0.68 ? ? 0.68 ?Time#strftime ? 1.31 ? ? 9.67 ? ? ?0.16 ? ? ?298 ? ? 0.54 ? ? 0.54 ?IO#pos= ? 1.23 ? ? 9.82 ? ? ?0.15 ? ? ?915 ? ? 0.16 ? ? 0.16 ?FileFormat::WavFile#file ? 1.19 ? ? 9.96 ? ? ?0.15 ? ? ?238 ? ? 0.61 ? ?19.94 ?Logger::LogDevice#write ? 1.10 ? ?10.10 ? ? ?0.13 ? ? ?952 ? ? 0.14 ? ? 0.14 ?##critical= ? 1.00 ? ?10.22 ? ? ?0.12 ? ? ?238 ? ? 0.51 ? ? 0.80 ?MonitorMixin. mon_check_owner ? 0.91 ? ?10.33 ? ? ?0.11 ? ? ?530 ? ? 0.21 ? ? 0.21 ?IO#getc ? 0.85 ? ?10.43 ? ? ?0.10 ? ? ?238 ? ? 0.43 ? ? 0.43 ?Kernel.is_a? ? 0.85 ? ?10.54 ? ? ?0.10 ? ? 1060 ? ? 0.10 ? ? 0.10 ?Fixnum#* ? 0.83 ? ?10.64 ? ? ?0.10 ? ? ?239 ? ? 0.42 ? ? 0.42 ?Array#[] ? 0.81 ? ?10.74 ? ? ?0.10 ? ? ?476 ? ? 0.21 ? ? 0.21 ?Fixnum#> ? 0.75 ? ?10.83 ? ? ?0.09 ? ? ?476 ? ? 0.19 ? ? 0.19 ?Array#shift ? 0.72 ? ?10.91 ? ? ?0.09 ? ? ?965 ? ? 0.09 ? ? 0.09 ?Fixnum#+ ? 0.71 ? ?11.00 ? ? ?0.09 ? ? ? ?8 ? ?10.75 ?1494.63 ?Array#each ? 0.71 ? ?11.09 ? ? ?0.09 ? ? ? 34 ? ? 2.53 ? ? 2.53 ?IO#read ? 0.66 ? ?11.17 ? ? ?0.08 ? ? ?238 ? ? 0.34 ? ? 2.50 ?File#stat ? 0.66 ? ?11.25 ? ? ?0.08 ? ? ?238 ? ? 0.34 ? ? 0.34 ?Time#usec ? 0.64 ? ?11.33 ? ? ?0.08 ? ? ?238 ? ? 0.33 ? ? 0.33 ?NilClass#to_s ? 0.62 ? ?11.40 ? ? ?0.08 ? ? ?238 ? ? 0.32 ? ? 0.32 ?Kernel.respond_to? ? 0.61 ? ?11.47 ? ? ?0.07 ? ? ? 35 ? ? 2.11 ? ?11.74 ?FileFormat:: WavFile#audioFormat ? 0.57 ? ?11.54 ? ? ?0.07 ? ? ?344 ? ? 0.20 ? ? 0.21 ?Fixnum#== ? 0.51 ? ?11.61 ? ? ?0.06 ? ? ?476 ? ? 0.13 ? ? 0.13 ?##current ? 0.40 ? ?11.65 ? ? ?0.05 ? ? ?238 ? ? 0.21 ? ? 0.21 ?Fixnum#< ? 0.33 ? ?11.69 ? ? ?0.04 ? ? ?325 ? ? 0.12 ? ? 0.12 ?Kernel.== ? 0.32 ? ?11.73 ? ? ?0.04 ? ? ? 17 ? ? 2.29 ? ? 5.71 ?FileFormat::WavFile#exist? ? 0.25 ? ?11.76 ? ? ?0.03 ? ? ? ?1 ? ?31.00 ? ?31.00 ?File#initialize ? 0.25 ? ?11.79 ? ? ?0.03 ? ? ?222 ? ? 0.14 ? ? 0.14 ?Fixnum#to_s ? 0.24 ? ?11.82 ? ? ?0.03 ? ? ? 85 ? ? 0.34 ? ? 0.34 ?FileFormat:: WavFile#fileDir ? 0.21 ? ?11.85 ? ? ?0.02 ? ? ?238 ? ? 0.11 ? ? 0.11 ?Kernel.block_given? ? 0.20 ? ?11.87 ? ? ?0.02 ? ? ?240 ? ? 0.10 ? ? 0.10 ?Time#initialize ? 0.19 ? ?11.90 ? ? ?0.02 ? ? ? 17 ? ? 1.35 ? ? 1.71 ?FileFormat:: WavFile#readBytes ? 0.19 ? ?11.92 ? ? ?0.02 ? ? ?238 ? ? 0.10 ? ? 0.10 ?##pass ? 0.17 ? ?11.94 ? ? ?0.02 ? ? ? 17 ? ? 1.24 ? ?16.71 ?FileFormat:: WavFile#extraParamSize ? 0.15 ? ?11.96 ? ? ?0.02 ? ? ? 17 ? ? 1.06 ? ? 1.94 ?FileFormat:: WavFile#openFile ? 0.15 ? ?11.98 ? ? ?0.02 ? ? ?238 ? ? 0.08 ? ? 0.08 ?Module#=== ? 0.14 ? ?11.99 ? ? ?0.02 ? ? ?355 ? ? 0.05 ? ? 0.05 ?Fixnum#- ? 0.13 ? ?12.01 ? ? ?0.02 ? ? ? 34 ? ? 0.47 ? ?23.35 ?FileFormat:: WavFile#subChunk2Size ? 0.13 ? ?12.02 ? ? ?0.02 ? ? ? 87 ? ? 0.18 ? ? 0.18 ?IO#readline ? 0.10 ? ?12.04 ? ? ?0.01 ? ? ? 18 ? ? 0.67 ? ?16.67 ?FileFormat:: WavFile#bitPerSample ? 0.10 ? ?12.05 ? ? ?0.01 ? ? ?238 ? ? 0.05 ? ? 0.05 ?File::Stat#size ? 0.09 ? ?12.06 ? ? ?0.01 ? ? ?238 ? ? 0.05 ? ? 0.05 ?Kernel.nil? ? 0.08 ? ?12.07 ? ? ?0.01 ? ? ? ?1 ? ?10.00 ? 801.00 ?FileFormat:: FileConcat#concatFiles ? 0.08 ? ?12.08 ? ? ?0.01 ? ? ? 17 ? ? 0.59 ? ? 0.59 ?FileFormat:: WavFile#initialize ? 0.07 ? ?12.09 ? ? ?0.01 ? ? ? 17 ? ? 0.53 ? ? 0.53 ?##open ? 0.07 ? ?12.10 ? ? ?0.01 ? ? ? 34 ? ? 0.26 ? ? 0.38 ?FileFormat:: WavFile#fileSize ? 0.07 ? ?12.11 ? ? ?0.01 ? ? ? 18 ? ? 0.44 ? ? 5.67 ?FileFormat:: WavFile#sampleRate ? 0.07 ? ?12.11 ? ? ?0.01 ? ? ? 87 ? ? 0.09 ? ? 0.09 ?String#index ? 0.05 ? ?12.12 ? ? ?0.01 ? ? ? ?9 ? ? 0.67 ? ? 4.78 ?FileFormat:: FileConcat#writeData ? 0.05 ? ?12.12 ? ? ?0.01 ? ? ? 17 ? ? 0.35 ? ? 0.35 ?FileTest.exist? ? 0.04 ? ?12.13 ? ? ?0.01 ? ? ? ?2 ? ? 2.50 ? ? 8.00 ?Integer#downto ? 0.04 ? ?12.14 ? ? ?0.01 ? ? ? 18 ? ? 0.28 ? ? 6.17 ?FileFormat:: WavFile#subChunk1Size ? 0.04 ? ?12.14 ? ? ?0.01 ? ? ? 18 ? ? 0.28 ? ? 4.67 ?FileFormat:: WavFile#blockAlign ? 0.04 ? ?12.15 ? ? ?0.00 ? ? ? 17 ? ? 0.29 ? ? 0.71 ?FileFormat:: WavFile#chunkSize ? 0.04 ? ?12.15 ? ? ?0.00 ? ? ? 18 ? ? 0.28 ? ?12.22 ?FileFormat:: WavFile#byteRate ? 0.03 ? ?12.15 ? ? ?0.00 ? ? ? 34 ? ? 0.12 ? ? 0.12 ?FileTest.size ? 0.03 ? ?12.16 ? ? ?0.00 ? ? ? 44 ? ? 0.09 ? ? 0.09 ?IO#putc ? 0.03 ? ?12.16 ? ? ?0.00 ? ? ? 18 ? ? 0.22 ? ? 0.22 ?IO#to_io ? 0.02 ? ?12.17 ? ? ?0.00 ? ? ? 17 ? ? 0.18 ? ? 5.82 ?FileFormat:: WavFile#extraParams ? 0.02 ? ?12.17 ? ? ?0.00 ? ? ? ?2 ? ? 1.50 ? ? 3.50 ?Logger:: LogDevice#create_logfile ? 0.02 ? ?12.17 ? ? ?0.00 ? ? ? 20 ? ? 0.15 ? ? 0.15 ?IO#close ? 0.02 ? ?12.17 ? ? ?0.00 ? ? ? 17 ? ? 0.12 ? ? 0.12 ?Array#<< ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? ?8 ? ? 0.25 ? ? 0.25 ?##rename ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? 28 ? ? 0.07 ? ? 0.07 ?Fixnum#<< ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? 56 ? ? 0.04 ? ? 0.04 ?Fixnum#>> ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? 18 ? ? 0.11 ? ? 8.94 ?FileFormat:: WavFile#numChannels ? 0.02 ? ?12.18 ? ? ?0.00 ? ? ? 51 ? ? 0.04 ? ? 0.04 ?IO#eof ? 0.01 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.50 ? ? 2.00 ?Logger:: LogDevice#add_log_header ? 0.01 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.50 ? ? 0.50 ?Time#to_s ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?IO#sync= ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ?12.50 ?Logger:: LogDevice#shift_log_age ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?6 ? ? 0.00 ? ? 0.00 ?##exist? ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ? 0.00 ?Array#length ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?2 ? ? 0.00 ? ? 0.00 ?Kernel.open ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? ?31.00 ?FileFormat:: FileConcat#initialize ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? 17 ? ? 0.00 ? ? 0.00 ?Array#to_s ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 ? 209.00 ?FileFormat:: FileConcat#concat_data_block ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?4 ? ? 0.00 ? ? 0.00 ?Fixnum#| ? 0.00 ? ?12.18 ? ? ?0.00 ? ? ? ?4 ? ? 0.00 ? ? 1.00 ?FileFormat:: FileConcat#writeBytes ? 0.00 ? ?12.19 ? ? ?0.00 ? ? ? ?1 ? ? 0.00 12187.00 ?#toplevel This performance of JRuby is rather bad. Reasons may come from: 1. JRuby is in nature very slow. We can not do anything to this 2. JRuby's startup time is longer than that of Ruby. I wonder this situation would be improved if we have had on in-memory JVM Peter K Chan wrote: Not anymore, Nate. :) JRuby WAS slow six months ago, but it has come a long way. Check this out: http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance.html Summary: In interpretive mode, JRuby is no more than 2x slower, and that's including JVM startup and lack of hotspot warm up. In unoptimized compiled mode, JRuby often beats C Ruby. I have been using JRuby in my project, and I haven't had any performance complaints since 2 months ago. Peter ________________________________________ From: chicagogroup-members-list-bounces at rubyforge.org [mailto: chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby Sent: Tuesday, May 29, 2007 2:23 AM To: Chirb discussion list Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t Peter, JRuby is slow. ?Try RJB (http://rjb.rubyforge.org/) Nate Peter K Chan wrote: Sure! I will be up for some Uger-hacking/feedback-taking (I also need to apply Colin's patch from a while ago and push it out). Hmm...maybe I should think of a lightning talk on JRuby or something. Peter -----Original Message----- From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Evan Farrar Sent: Monday, May 28, 2007 5:51 PM To: Chirb discussion list Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t Woohoo Lightning talks! I will definitely come with something. I also would like to call together a uger hacksession if Peter Chang is around for the meeting. On 5/28/07, Josh Cronemeyer wrote: ? Ok, nobody signed up for the talk and we are a week away from the next CHIRB. ?Soooo, unless anyone objects I think we should have another "lightning talk / code pit" session like the one last december. ?If ? ? you can ? prepare something that you can get through in 10 minutes or so, please ? ? do. ? Alternatively you can put out a request for a talk on a certain topic ? ? and ? perhaps that will inspire somebody. ?I'm mulling over a topic just to ? ? force ? myself to learn something new (Why's camping framework). ?But I make ? ? no ? promises :) ?Let's have fun with this and take advantage of the chance ? ? for ? all of us to talk. ?No pressure!!!! http://chirb.org/event/show/18 Josh Cronemeyer _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list ? ? _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list ? _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list ? _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list _______________________________________________ ChicagoGroup-Members-List at rubyforge.org http://rubyforge.org/mailman/listinfo/chicagogroup-members-list From mattjonesphoto at gmail.com Tue May 29 21:25:26 2007 From: mattjonesphoto at gmail.com (Matt Jones) Date: Tue, 29 May 2007 20:25:26 -0500 Subject: [Chirb] bulk file uploading in rails Message-ID: <9419ba00705291825s1a3736c9g2aca890a52499fdf@mail.gmail.com> In my gallery application, I need to allow bulk uploading of files. I want to allow users to select a folder and the folder may contain 1-2500 photos. Obviously, this would take some time, and the HTML File control is not suited for this task. It seems that bulk file uploading might be the one reason to use either flash or a java applet in a web application. Some alternatives I've seen are: the flash method: http://blog.vixiom.com/2006/09/08/multiple-file-upload-with-flash-and-ruby-on-rails/ The paid for jupload: http://www.jupload.biz/content/view/16/30/ The GPL jupload: http://jupload.sourceforge.net/ Has anyone used either jupload method or the flash method or some alternative method like WebDav to accomplish bulk file uploading with rails? What was your experience with whatever tool you used? Thanks, Matt -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070529/642d838a/attachment.html From natebkirby at yahoo.com Tue May 29 23:27:08 2007 From: natebkirby at yahoo.com (Nate Kirby) Date: Wed, 30 May 2007 11:27:08 +0800 Subject: [Chirb] JRuby performance In-Reply-To: References: <465BF078.8050808@yahoo.com> <465CC5FD.7030505@yahoo.com> Message-ID: <465CEF0C.7090300@yahoo.com> Peter, From what I can see of JRB, since it *appears* to use a standard ruby C bridge to the JVM, I expect performance to be about as good as possible. When I get new result I will see about posting them. Blessings, Nate Peter K Chan wrote: > Sure, Nate. > > I do concede that JRuby is not yet a Ruby drop in replacement, at least not for running small scripts. It takes only 5 minutes to tweak the performance, but it is still 5 minutes more than C Ruby. Where JRuby really shines is in Java integration and scalability (e.g. running multiple rails instances within a single JVM, connecting to a JDBC database). > > I would be very interested in seeing what kind of performance you get for your evaluation. > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > Sent: Tuesday, May 29, 2007 7:32 PM > To: Chirb discussion list > Subject: Re: [Chirb] JRuby performance > > Peter, > > I actually had someone else do it. I will forward your suggestions along to them. I have had the impression in the past that individual vendors VMs were often faster than Suns for their platform. That is possibly in error, but in the late 90's it was not. > > Thanks, > Nate > > Peter K Chan wrote: > Nate, > Josh has already brought up most of what I was going to reply to you, but let me just highlight these factors, which may explain your performance result: > > - Are you using a modern JVM, such as Sun 1.6.0, with hotspot/JIT compilation? > - Did you disable object space? (Makes a huge 20% - 40% difference, I disable it in all my apps) > - Did you pull the latest trunk or at least RC version of JRuby? > - Did you turn on the JRuby AOT or JIT compiler? > - I think that JRuby's set_trace_func is slow; therefore, if you use profile.rb, you may be incurring large profiling cost (actually, set_trace_func isn't working in current JRuby compiler, so you must have been running JRuby in pure interpretive mode). > > Also, keep in mind that the benchmark result I linked to include JVM startup time. If you consider that the JVM takes a few seconds to fully warm up, and most benchmark finishes in a few seconds, JRuby's result is even more impressive. > > Don't take my word for it. Run your benchmark with the right settings, and you can see for yourself. :) > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Josh Cronemeyer > Sent: Tuesday, May 29, 2007 11:11 AM > To: Chirb discussion list > Subject: [Chirb] JRuby performance > > > discussion moved from this thread: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Nate, > > I've heard alot of good stuff about jruby performance, not from just peter. > > > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > > I think you should run your tests with a real JVM (like sun's implementation). You are using gij which is a java interpretor. GIJ is a part of the GCJ project. GCJ is a very different beast than sun's implementation. The idea behind GCJ is that java is compiled down to your specific platform's machine code. So they bypass the jvm all together. This sounds like it would be faster, but it really isn't for many things because sun's just in time compilation can actually compile the same code in different ways depending on context in order to optimize execution. I'm not sure if Jruby uses runtime code loading or generation (i wouldn't be surprised though). If that is the case GCJ is SUPER slow for those types of operations because that is when the gij interpreter kicks in. The interpreter is realizing no benefits from optimization or compilation. > > The short of it: I wouldn't call my tests definitive until I was using sun's jvm. > > Josh Cronemeyer > > chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 04:20:56 AM: > > > Peter, > > I can take your word for it....or I can check the performance stats we > just did a few weeks ago JRuby was 10x slower than ruby at the command > line on a Fedora box. > > Nate > > STATS > > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > > Copyright (C) 2006 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > I did not change the default JVM. I used the Ruby project > concatenating wav files and profiler to see the performance data. This > is the result: > Ruby: > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 10.24 0.13 0.13 238 0.55 1.13 MonitorMixin.mon_exit > 7.09 0.22 0.09 238 0.38 2.27 MonitorMixin.synchronize > 6.30 0.30 0.08 238 0.34 3.57 Logger#add > 5.51 0.37 0.07 238 0.29 0.34 Logger:: > Formatter#format_datetime > 4.72 0.43 0.06 17 3.53 68.82 FileFormat:: > WavFile#getInfo > 4.72 0.49 0.06 203 0.30 0.69 Integer#times > 3.94 0.54 0.05 238 0.21 0.42 Logger:: > LogDevice#check_shift_log > 3.15 0.58 0.04 238 0.17 0.25 MonitorMixin.mon_release > 3.15 0.62 0.04 238 0.17 0.34 MonitorMixin.mon_enter > 2.36 0.65 0.03 256 0.12 0.12 String#+ > 2.36 0.68 0.03 87 0.34 0.57 FileFormat:: > WavFile#dataPos > 2.36 0.71 0.03 177 0.17 0.85 FileFormat:: > WavFile#readBigNum > 2.36 0.74 0.03 530 0.06 0.06 IO#getc > 2.36 0.77 0.03 8 3.75 155.00 Array#each > 2.36 0.80 0.03 476 0.06 0.06 Thread#current > 2.36 0.83 0.03 238 0.13 0.13 Logger#format_severity > 2.36 0.86 0.03 238 0.13 0.21 MonitorMixin. > mon_check_owner > 2.36 0.89 0.03 952 0.03 0.03 Thread#critical= > 2.36 0.92 0.03 238 0.13 0.55 Logger::Formatter#call > 1.57 0.94 0.02 476 0.04 0.04 Array#shift > 1.57 0.96 0.02 1060 0.02 0.02 Fixnum#* > 1.57 0.98 0.02 238 0.08 0.08 Module#=== > 1.57 1.00 0.02 238 0.08 0.08 IO#stat > 1.57 1.02 0.02 87 0.23 0.23 IO#readline > 1.57 1.04 0.02 476 0.04 0.04 Fixnum#> > 1.57 1.06 0.02 965 0.02 0.02 Fixnum#+ > 0.79 1.07 0.01 17 0.59 2.94 FileFormat:: > WavFile#extraParams > 0.79 1.08 0.01 238 0.04 0.04 Kernel.nil? > 0.79 1.09 0.01 240 0.04 0.04 Time#initialize > 0.79 1.10 0.01 44 0.23 0.23 IO#putc > 0.79 1.11 0.01 34 0.29 0.29 FileFormat:: > WavFile#fileSize > 0.79 1.12 0.01 238 0.04 0.59 Logger#format_message > 0.79 1.13 0.01 34 0.29 0.29 IO#read > 0.79 1.14 0.01 17 0.59 0.59 FileFormat:: > WavFile#readBytes > 0.79 1.15 0.01 238 0.04 0.04 Time#usec > 0.79 1.16 0.01 238 0.04 0.04 Kernel.block_given? > 0.79 1.17 0.01 238 0.04 2.31 Logger::LogDevice#write > 0.79 1.18 0.01 18 0.56 0.56 FileFormat:: > WavFile#bitPerSample > 0.79 1.19 0.01 34 0.29 1.47 FileFormat:: > WavFile#subChunk2Size > 0.79 1.20 0.01 238 0.04 0.13 MonitorMixin.mon_acquire > 0.79 1.21 0.01 238 0.04 0.04 Fixnum#< > 0.79 1.22 0.01 238 0.04 3.61 Logger#info > 0.79 1.23 0.01 18 0.56 1.67 FileFormat:: > WavFile#sampleRate > 0.79 1.24 0.01 325 0.03 0.03 Kernel.== > 0.79 1.25 0.01 238 0.04 0.04 File::Stat#size > 0.79 1.26 0.01 240 0.04 0.08 Time#now > 0.79 1.27 0.01 344 0.03 0.03 Fixnum#== > 0.00 1.27 0.00 2 0.00 0.00 IO#sync= > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > WavFile#byteRate > 0.00 1.27 0.00 18 0.00 0.00 Class#new > 0.00 1.27 0.00 17 0.00 0.00 Array#to_s > 0.00 1.27 0.00 1 0.00 0.00 FileFormat:: > FileConcat#initialize > 0.00 1.27 0.00 18 0.00 0.00 IO#to_io > 0.00 1.27 0.00 35 0.00 0.00 FileFormat:: > WavFile#audioFormat > 0.00 1.27 0.00 238 0.00 0.08 Logger::Formatter#msg2str > 0.00 1.27 0.00 238 0.00 0.00 String#[] > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#openFile > 0.00 1.27 0.00 28 0.00 0.00 Fixnum#<< > 0.00 1.27 0.00 56 0.00 0.00 Fixnum#>> > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#create_logfile > 0.00 1.27 0.00 298 0.00 0.00 IO#pos= > 0.00 1.27 0.00 17 0.00 0.00 File#exist? > 0.00 1.27 0.00 238 0.00 0.00 Thread#pass > 0.00 1.27 0.00 238 0.00 0.00 NilClass#to_s > 0.00 1.27 0.00 17 0.00 0.00 Array#<< > 0.00 1.27 0.00 51 0.00 0.00 IO#eof? > 0.00 1.27 0.00 9 0.00 2.22 FileFormat:: > FileConcat#writeData > 0.00 1.27 0.00 2 0.00 0.00 Time#to_s > 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#exist? > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#chunkSize > 0.00 1.27 0.00 238 0.00 0.00 Kernel.respond_to? > 0.00 1.27 0.00 1 0.00 0.00 IO#new > 0.00 1.27 0.00 238 0.00 0.00 Time#strftime > 0.00 1.27 0.00 4 0.00 0.00 Fixnum#| > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > WavFile#blockAlign > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#extraParamSize > 0.00 1.27 0.00 6 0.00 0.00 FileTest.exist? > 0.00 1.27 0.00 17 0.00 0.00 IO#open > 0.00 1.27 0.00 355 0.00 0.00 Fixnum#- > 0.00 1.27 0.00 239 0.00 0.00 Array#[] > 0.00 1.27 0.00 18 0.00 1.67 FileFormat:: > WavFile#numChannels > 0.00 1.27 0.00 1 0.00 0.00 Array#size > 0.00 1.27 0.00 20 0.00 0.00 IO#close > 0.00 1.27 0.00 8 0.00 0.00 File#rename > 0.00 1.27 0.00 87 0.00 0.00 String#index > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#initialize > 0.00 1.27 0.00 1 0.00 90.00 FileFormat:: > FileConcat#concatFiles > 0.00 1.27 0.00 2 0.00 0.00 Kernel.open > 0.00 1.27 0.00 2 0.00 0.00 Integer#downto > 0.00 1.27 0.00 4 0.00 0.00 FileFormat:: > FileConcat#writeBytes > 0.00 1.27 0.00 1 0.00 30.00 FileFormat:: > FileConcat#concat_data_block > 0.00 1.27 0.00 476 0.00 0.00 NilClass#nil? > 0.00 1.27 0.00 20 0.00 0.00 File#initialize > 0.00 1.27 0.00 478 0.00 0.00 String#% > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#add_log_header > 0.00 1.27 0.00 18 0.00 2.78 FileFormat:: > WavFile#subChunk1Size > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#shift_log_age > 0.00 1.27 0.00 318 0.00 0.00 IO#write > 0.00 1.27 0.00 238 0.00 0.00 String#<< > 0.00 1.27 0.00 238 0.00 0.00 Kernel.is_a? > 0.00 1.27 0.00 222 0.00 0.00 Fixnum#to_s > 0.00 1.27 0.00 34 0.00 0.00 File#size > 0.00 1.27 0.00 1 0.00 1270.00 #toplevel > > JRuby: > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 10.27 1.25 1.25 203 6.17 7.84 Integer#times > 9.64 2.43 1.17 238 4.94 36.55 Logger#add > 6.57 3.23 0.80 238 3.37 5.86 MonitorMixin.mon_exit > 5.23 3.86 0.64 238 2.68 4.19 Logger:: > Formatter#format_datetime > 4.92 4.46 0.60 238 2.52 19.33 MonitorMixin. > mon_synchronize > 4.37 5.00 0.53 274 1.95 1.95 IO#write > 4.12 5.50 0.50 238 2.11 5.62 Logger:: > LogDevice#check_shift_log > 3.36 5.91 0.41 238 1.72 3.01 MonitorMixin.mon_enter > 3.23 6.30 0.39 497 0.79 1.52 Class#new > 3.08 6.68 0.38 238 1.58 1.65 Logger::Formatter#msg2str > 2.33 6.96 0.28 238 1.19 1.62 Logger#format_severity > 2.33 7.24 0.28 238 1.19 37.75 Logger#info > 2.21 7.51 0.27 238 1.13 7.65 Logger::Formatter#call > 2.18 7.78 0.27 238 1.12 1.12 File::Stat#initialize > 2.08 8.03 0.25 17 14.94 658.12 FileFormat:: > WavFile#getInfo > 1.71 8.24 0.21 238 0.88 1.00 MonitorMixin.mon_acquire > 1.70 8.45 0.21 87 2.38 4.87 FileFormat:: > WavFile#dataPos > 1.62 8.65 0.20 177 1.12 10.50 FileFormat:: > WavFile#readBigNum > 1.51 8.83 0.18 478 0.38 0.55 String#% > 1.44 9.01 0.18 238 0.74 8.39 Logger#format_message > 1.40 9.18 0.17 476 0.36 0.36 NilClass#nil? > 1.37 9.35 0.17 238 0.70 1.08 MonitorMixin.mon_release > 1.32 9.51 0.16 238 0.68 0.68 Time#strftime > 1.31 9.67 0.16 298 0.54 0.54 IO#pos= > 1.23 9.82 0.15 915 0.16 0.16 FileFormat::WavFile#file > 1.19 9.96 0.15 238 0.61 19.94 Logger::LogDevice#write > 1.10 10.10 0.13 952 0.14 0.14 ##critical= > 1.00 10.22 0.12 238 0.51 0.80 MonitorMixin. > mon_check_owner > 0.91 10.33 0.11 530 0.21 0.21 IO#getc > 0.85 10.43 0.10 238 0.43 0.43 Kernel.is_a? > 0.85 10.54 0.10 1060 0.10 0.10 Fixnum#* > 0.83 10.64 0.10 239 0.42 0.42 Array#[] > 0.81 10.74 0.10 476 0.21 0.21 Fixnum#> > 0.75 10.83 0.09 476 0.19 0.19 Array#shift > 0.72 10.91 0.09 965 0.09 0.09 Fixnum#+ > 0.71 11.00 0.09 8 10.75 1494.63 Array#each > 0.71 11.09 0.09 34 2.53 2.53 IO#read > 0.66 11.17 0.08 238 0.34 2.50 File#stat > 0.66 11.25 0.08 238 0.34 0.34 Time#usec > 0.64 11.33 0.08 238 0.33 0.33 NilClass#to_s > 0.62 11.40 0.08 238 0.32 0.32 Kernel.respond_to? > 0.61 11.47 0.07 35 2.11 11.74 FileFormat:: > WavFile#audioFormat > 0.57 11.54 0.07 344 0.20 0.21 Fixnum#== > 0.51 11.61 0.06 476 0.13 0.13 ##current > 0.40 11.65 0.05 238 0.21 0.21 Fixnum#< > 0.33 11.69 0.04 325 0.12 0.12 Kernel.== > 0.32 11.73 0.04 17 2.29 5.71 FileFormat::WavFile#exist? > 0.25 11.76 0.03 1 31.00 31.00 File#initialize > 0.25 11.79 0.03 222 0.14 0.14 Fixnum#to_s > 0.24 11.82 0.03 85 0.34 0.34 FileFormat:: > WavFile#fileDir > 0.21 11.85 0.02 238 0.11 0.11 Kernel.block_given? > 0.20 11.87 0.02 240 0.10 0.10 Time#initialize > 0.19 11.90 0.02 17 1.35 1.71 FileFormat:: > WavFile#readBytes > 0.19 11.92 0.02 238 0.10 0.10 ##pass > 0.17 11.94 0.02 17 1.24 16.71 FileFormat:: > WavFile#extraParamSize > 0.15 11.96 0.02 17 1.06 1.94 FileFormat:: > WavFile#openFile > 0.15 11.98 0.02 238 0.08 0.08 Module#=== > 0.14 11.99 0.02 355 0.05 0.05 Fixnum#- > 0.13 12.01 0.02 34 0.47 23.35 FileFormat:: > WavFile#subChunk2Size > 0.13 12.02 0.02 87 0.18 0.18 IO#readline > 0.10 12.04 0.01 18 0.67 16.67 FileFormat:: > WavFile#bitPerSample > 0.10 12.05 0.01 238 0.05 0.05 File::Stat#size > 0.09 12.06 0.01 238 0.05 0.05 Kernel.nil? > 0.08 12.07 0.01 1 10.00 801.00 FileFormat:: > FileConcat#concatFiles > 0.08 12.08 0.01 17 0.59 0.59 FileFormat:: > WavFile#initialize > 0.07 12.09 0.01 17 0.53 0.53 ##open > 0.07 12.10 0.01 34 0.26 0.38 FileFormat:: > WavFile#fileSize > 0.07 12.11 0.01 18 0.44 5.67 FileFormat:: > WavFile#sampleRate > 0.07 12.11 0.01 87 0.09 0.09 String#index > 0.05 12.12 0.01 9 0.67 4.78 FileFormat:: > FileConcat#writeData > 0.05 12.12 0.01 17 0.35 0.35 FileTest.exist? > 0.04 12.13 0.01 2 2.50 8.00 Integer#downto > 0.04 12.14 0.01 18 0.28 6.17 FileFormat:: > WavFile#subChunk1Size > 0.04 12.14 0.01 18 0.28 4.67 FileFormat:: > WavFile#blockAlign > 0.04 12.15 0.00 17 0.29 0.71 FileFormat:: > WavFile#chunkSize > 0.04 12.15 0.00 18 0.28 12.22 FileFormat:: > WavFile#byteRate > 0.03 12.15 0.00 34 0.12 0.12 FileTest.size > 0.03 12.16 0.00 44 0.09 0.09 IO#putc > 0.03 12.16 0.00 18 0.22 0.22 IO#to_io > 0.02 12.17 0.00 17 0.18 5.82 FileFormat:: > WavFile#extraParams > 0.02 12.17 0.00 2 1.50 3.50 Logger:: > LogDevice#create_logfile > 0.02 12.17 0.00 20 0.15 0.15 IO#close > 0.02 12.17 0.00 17 0.12 0.12 Array#<< > 0.02 12.18 0.00 8 0.25 0.25 ##rename > 0.02 12.18 0.00 28 0.07 0.07 Fixnum#<< > 0.02 12.18 0.00 56 0.04 0.04 Fixnum#>> > 0.02 12.18 0.00 18 0.11 8.94 FileFormat:: > WavFile#numChannels > 0.02 12.18 0.00 51 0.04 0.04 IO#eof > 0.01 12.18 0.00 2 0.50 2.00 Logger:: > LogDevice#add_log_header > 0.01 12.18 0.00 2 0.50 0.50 Time#to_s > 0.00 12.18 0.00 2 0.00 0.00 IO#sync= > 0.00 12.18 0.00 2 0.00 12.50 Logger:: > LogDevice#shift_log_age > 0.00 12.18 0.00 6 0.00 0.00 ##exist? > 0.00 12.18 0.00 1 0.00 0.00 Array#length > 0.00 12.18 0.00 2 0.00 0.00 Kernel.open > 0.00 12.18 0.00 1 0.00 31.00 FileFormat:: > FileConcat#initialize > 0.00 12.18 0.00 17 0.00 0.00 Array#to_s > 0.00 12.18 0.00 1 0.00 209.00 FileFormat:: > FileConcat#concat_data_block > 0.00 12.18 0.00 4 0.00 0.00 Fixnum#| > 0.00 12.18 0.00 4 0.00 1.00 FileFormat:: > FileConcat#writeBytes > 0.00 12.19 0.00 1 0.00 12187.00 #toplevel > > This performance of JRuby is rather bad. Reasons may come from: > 1. JRuby is in nature very slow. We can not do anything to this > 2. JRuby's startup time is longer than that of Ruby. I wonder this > situation would be improved if we have had on in-memory JVM > > > Peter K Chan wrote: > Not anymore, Nate. :) > > JRuby WAS slow six months ago, but it has come a long way. Check this out: > > http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance.html > > Summary: In interpretive mode, JRuby is no more than 2x slower, and > that's including JVM startup and lack of hotspot warm up. In > unoptimized compiled mode, JRuby often beats C Ruby. I have been using > JRuby in my project, and I haven't had any performance complaints > since 2 months ago. > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto: > chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > Sent: Tuesday, May 29, 2007 2:23 AM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Peter, > > JRuby is slow. Try RJB (http://rjb.rubyforge.org/) > > Nate > > Peter K Chan wrote: > Sure! I will be up for some Uger-hacking/feedback-taking (I also need to > apply Colin's patch from a while ago and push it out). > > Hmm...maybe I should think of a lightning talk on JRuby or something. > > Peter > > -----Original Message----- > From: chicagogroup-members-list-bounces at rubyforge.org > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > Evan Farrar > Sent: Monday, May 28, 2007 5:51 PM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Woohoo Lightning talks! I will definitely come with something. I also > would like to call together a uger hacksession if Peter Chang is > around for the meeting. > > On 5/28/07, Josh Cronemeyer wrote: > > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. If > > you can > > prepare something that you can get through in 10 minutes or so, please > > do. > > Alternatively you can put out a request for a talk on a certain topic > > and > > perhaps that will inspire somebody. I'm mulling over a topic just to > > force > > myself to learn something new (Why's camping framework). But I make > > no > > promises :) Let's have fun with this and take advantage of the chance > > for > > all of us to talk. No pressure!!!! > > http://chirb.org/event/show/18 > > Josh Cronemeyer > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > From natebkirby at yahoo.com Wed May 30 10:09:49 2007 From: natebkirby at yahoo.com (Nate Kirby) Date: Wed, 30 May 2007 22:09:49 +0800 Subject: [Chirb] JRuby performance In-Reply-To: References: <465BF078.8050808@yahoo.com> <465CC5FD.7030505@yahoo.com> Message-ID: <465D85AD.3010700@yahoo.com> Peter, This is the reponse I got: ************* The JVM on my Ubuntu machine is Sun's: clive at epiphany:~$ java -version java version "1.6.0" Java(TM) SE Runtime Environment (build 1.6.0-b105) Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing) And I use the latest version of JRuby. I ran that piece of code with profiling again on my machine, which is very old one, C Ruby took 2.72 sec, JRuby took 22.78 sec. 8.375 times difference. Then I changed the code, took out profiler, and printed out the start time and finish time only, C Ruby took 0.27586 sec, JRuby took 4.074 sec: 14.768360763 times difference. The attachment is the raw data. I did not: -disable object space (I did some research, but have no idea of how to do that. The hotspot server seemed to have some option about size of object space, but I don't think it allows us to set the size to 0) -turn on the JRuby AOT or JIT compiler ( I have no idea of what that is) It seems that the performance under default setting is still bad. ************** Blessings, Nate Peter K Chan wrote: > Sure, Nate. > > I do concede that JRuby is not yet a Ruby drop in replacement, at least not for running small scripts. It takes only 5 minutes to tweak the performance, but it is still 5 minutes more than C Ruby. Where JRuby really shines is in Java integration and scalability (e.g. running multiple rails instances within a single JVM, connecting to a JDBC database). > > I would be very interested in seeing what kind of performance you get for your evaluation. > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > Sent: Tuesday, May 29, 2007 7:32 PM > To: Chirb discussion list > Subject: Re: [Chirb] JRuby performance > > Peter, > > I actually had someone else do it. I will forward your suggestions along to them. I have had the impression in the past that individual vendors VMs were often faster than Suns for their platform. That is possibly in error, but in the late 90's it was not. > > Thanks, > Nate > > Peter K Chan wrote: > Nate, > Josh has already brought up most of what I was going to reply to you, but let me just highlight these factors, which may explain your performance result: > > - Are you using a modern JVM, such as Sun 1.6.0, with hotspot/JIT compilation? > - Did you disable object space? (Makes a huge 20% - 40% difference, I disable it in all my apps) > - Did you pull the latest trunk or at least RC version of JRuby? > - Did you turn on the JRuby AOT or JIT compiler? > - I think that JRuby's set_trace_func is slow; therefore, if you use profile.rb, you may be incurring large profiling cost (actually, set_trace_func isn't working in current JRuby compiler, so you must have been running JRuby in pure interpretive mode). > > Also, keep in mind that the benchmark result I linked to include JVM startup time. If you consider that the JVM takes a few seconds to fully warm up, and most benchmark finishes in a few seconds, JRuby's result is even more impressive. > > Don't take my word for it. Run your benchmark with the right settings, and you can see for yourself. :) > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Josh Cronemeyer > Sent: Tuesday, May 29, 2007 11:11 AM > To: Chirb discussion list > Subject: [Chirb] JRuby performance > > > discussion moved from this thread: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Nate, > > I've heard alot of good stuff about jruby performance, not from just peter. > > > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > > I think you should run your tests with a real JVM (like sun's implementation). You are using gij which is a java interpretor. GIJ is a part of the GCJ project. GCJ is a very different beast than sun's implementation. The idea behind GCJ is that java is compiled down to your specific platform's machine code. So they bypass the jvm all together. This sounds like it would be faster, but it really isn't for many things because sun's just in time compilation can actually compile the same code in different ways depending on context in order to optimize execution. I'm not sure if Jruby uses runtime code loading or generation (i wouldn't be surprised though). If that is the case GCJ is SUPER slow for those types of operations because that is when the gij interpreter kicks in. The interpreter is realizing no benefits from optimization or compilation. > > The short of it: I wouldn't call my tests definitive until I was using sun's jvm. > > Josh Cronemeyer > > chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 04:20:56 AM: > > > Peter, > > I can take your word for it....or I can check the performance stats we > just did a few weeks ago JRuby was 10x slower than ruby at the command > line on a Fedora box. > > Nate > > STATS > > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > > Copyright (C) 2006 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > I did not change the default JVM. I used the Ruby project > concatenating wav files and profiler to see the performance data. This > is the result: > Ruby: > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 10.24 0.13 0.13 238 0.55 1.13 MonitorMixin.mon_exit > 7.09 0.22 0.09 238 0.38 2.27 MonitorMixin.synchronize > 6.30 0.30 0.08 238 0.34 3.57 Logger#add > 5.51 0.37 0.07 238 0.29 0.34 Logger:: > Formatter#format_datetime > 4.72 0.43 0.06 17 3.53 68.82 FileFormat:: > WavFile#getInfo > 4.72 0.49 0.06 203 0.30 0.69 Integer#times > 3.94 0.54 0.05 238 0.21 0.42 Logger:: > LogDevice#check_shift_log > 3.15 0.58 0.04 238 0.17 0.25 MonitorMixin.mon_release > 3.15 0.62 0.04 238 0.17 0.34 MonitorMixin.mon_enter > 2.36 0.65 0.03 256 0.12 0.12 String#+ > 2.36 0.68 0.03 87 0.34 0.57 FileFormat:: > WavFile#dataPos > 2.36 0.71 0.03 177 0.17 0.85 FileFormat:: > WavFile#readBigNum > 2.36 0.74 0.03 530 0.06 0.06 IO#getc > 2.36 0.77 0.03 8 3.75 155.00 Array#each > 2.36 0.80 0.03 476 0.06 0.06 Thread#current > 2.36 0.83 0.03 238 0.13 0.13 Logger#format_severity > 2.36 0.86 0.03 238 0.13 0.21 MonitorMixin. > mon_check_owner > 2.36 0.89 0.03 952 0.03 0.03 Thread#critical= > 2.36 0.92 0.03 238 0.13 0.55 Logger::Formatter#call > 1.57 0.94 0.02 476 0.04 0.04 Array#shift > 1.57 0.96 0.02 1060 0.02 0.02 Fixnum#* > 1.57 0.98 0.02 238 0.08 0.08 Module#=== > 1.57 1.00 0.02 238 0.08 0.08 IO#stat > 1.57 1.02 0.02 87 0.23 0.23 IO#readline > 1.57 1.04 0.02 476 0.04 0.04 Fixnum#> > 1.57 1.06 0.02 965 0.02 0.02 Fixnum#+ > 0.79 1.07 0.01 17 0.59 2.94 FileFormat:: > WavFile#extraParams > 0.79 1.08 0.01 238 0.04 0.04 Kernel.nil? > 0.79 1.09 0.01 240 0.04 0.04 Time#initialize > 0.79 1.10 0.01 44 0.23 0.23 IO#putc > 0.79 1.11 0.01 34 0.29 0.29 FileFormat:: > WavFile#fileSize > 0.79 1.12 0.01 238 0.04 0.59 Logger#format_message > 0.79 1.13 0.01 34 0.29 0.29 IO#read > 0.79 1.14 0.01 17 0.59 0.59 FileFormat:: > WavFile#readBytes > 0.79 1.15 0.01 238 0.04 0.04 Time#usec > 0.79 1.16 0.01 238 0.04 0.04 Kernel.block_given? > 0.79 1.17 0.01 238 0.04 2.31 Logger::LogDevice#write > 0.79 1.18 0.01 18 0.56 0.56 FileFormat:: > WavFile#bitPerSample > 0.79 1.19 0.01 34 0.29 1.47 FileFormat:: > WavFile#subChunk2Size > 0.79 1.20 0.01 238 0.04 0.13 MonitorMixin.mon_acquire > 0.79 1.21 0.01 238 0.04 0.04 Fixnum#< > 0.79 1.22 0.01 238 0.04 3.61 Logger#info > 0.79 1.23 0.01 18 0.56 1.67 FileFormat:: > WavFile#sampleRate > 0.79 1.24 0.01 325 0.03 0.03 Kernel.== > 0.79 1.25 0.01 238 0.04 0.04 File::Stat#size > 0.79 1.26 0.01 240 0.04 0.08 Time#now > 0.79 1.27 0.01 344 0.03 0.03 Fixnum#== > 0.00 1.27 0.00 2 0.00 0.00 IO#sync= > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > WavFile#byteRate > 0.00 1.27 0.00 18 0.00 0.00 Class#new > 0.00 1.27 0.00 17 0.00 0.00 Array#to_s > 0.00 1.27 0.00 1 0.00 0.00 FileFormat:: > FileConcat#initialize > 0.00 1.27 0.00 18 0.00 0.00 IO#to_io > 0.00 1.27 0.00 35 0.00 0.00 FileFormat:: > WavFile#audioFormat > 0.00 1.27 0.00 238 0.00 0.08 Logger::Formatter#msg2str > 0.00 1.27 0.00 238 0.00 0.00 String#[] > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#openFile > 0.00 1.27 0.00 28 0.00 0.00 Fixnum#<< > 0.00 1.27 0.00 56 0.00 0.00 Fixnum#>> > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#create_logfile > 0.00 1.27 0.00 298 0.00 0.00 IO#pos= > 0.00 1.27 0.00 17 0.00 0.00 File#exist? > 0.00 1.27 0.00 238 0.00 0.00 Thread#pass > 0.00 1.27 0.00 238 0.00 0.00 NilClass#to_s > 0.00 1.27 0.00 17 0.00 0.00 Array#<< > 0.00 1.27 0.00 51 0.00 0.00 IO#eof? > 0.00 1.27 0.00 9 0.00 2.22 FileFormat:: > FileConcat#writeData > 0.00 1.27 0.00 2 0.00 0.00 Time#to_s > 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#exist? > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#chunkSize > 0.00 1.27 0.00 238 0.00 0.00 Kernel.respond_to? > 0.00 1.27 0.00 1 0.00 0.00 IO#new > 0.00 1.27 0.00 238 0.00 0.00 Time#strftime > 0.00 1.27 0.00 4 0.00 0.00 Fixnum#| > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > WavFile#blockAlign > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#extraParamSize > 0.00 1.27 0.00 6 0.00 0.00 FileTest.exist? > 0.00 1.27 0.00 17 0.00 0.00 IO#open > 0.00 1.27 0.00 355 0.00 0.00 Fixnum#- > 0.00 1.27 0.00 239 0.00 0.00 Array#[] > 0.00 1.27 0.00 18 0.00 1.67 FileFormat:: > WavFile#numChannels > 0.00 1.27 0.00 1 0.00 0.00 Array#size > 0.00 1.27 0.00 20 0.00 0.00 IO#close > 0.00 1.27 0.00 8 0.00 0.00 File#rename > 0.00 1.27 0.00 87 0.00 0.00 String#index > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#initialize > 0.00 1.27 0.00 1 0.00 90.00 FileFormat:: > FileConcat#concatFiles > 0.00 1.27 0.00 2 0.00 0.00 Kernel.open > 0.00 1.27 0.00 2 0.00 0.00 Integer#downto > 0.00 1.27 0.00 4 0.00 0.00 FileFormat:: > FileConcat#writeBytes > 0.00 1.27 0.00 1 0.00 30.00 FileFormat:: > FileConcat#concat_data_block > 0.00 1.27 0.00 476 0.00 0.00 NilClass#nil? > 0.00 1.27 0.00 20 0.00 0.00 File#initialize > 0.00 1.27 0.00 478 0.00 0.00 String#% > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#add_log_header > 0.00 1.27 0.00 18 0.00 2.78 FileFormat:: > WavFile#subChunk1Size > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#shift_log_age > 0.00 1.27 0.00 318 0.00 0.00 IO#write > 0.00 1.27 0.00 238 0.00 0.00 String#<< > 0.00 1.27 0.00 238 0.00 0.00 Kernel.is_a? > 0.00 1.27 0.00 222 0.00 0.00 Fixnum#to_s > 0.00 1.27 0.00 34 0.00 0.00 File#size > 0.00 1.27 0.00 1 0.00 1270.00 #toplevel > > JRuby: > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 10.27 1.25 1.25 203 6.17 7.84 Integer#times > 9.64 2.43 1.17 238 4.94 36.55 Logger#add > 6.57 3.23 0.80 238 3.37 5.86 MonitorMixin.mon_exit > 5.23 3.86 0.64 238 2.68 4.19 Logger:: > Formatter#format_datetime > 4.92 4.46 0.60 238 2.52 19.33 MonitorMixin. > mon_synchronize > 4.37 5.00 0.53 274 1.95 1.95 IO#write > 4.12 5.50 0.50 238 2.11 5.62 Logger:: > LogDevice#check_shift_log > 3.36 5.91 0.41 238 1.72 3.01 MonitorMixin.mon_enter > 3.23 6.30 0.39 497 0.79 1.52 Class#new > 3.08 6.68 0.38 238 1.58 1.65 Logger::Formatter#msg2str > 2.33 6.96 0.28 238 1.19 1.62 Logger#format_severity > 2.33 7.24 0.28 238 1.19 37.75 Logger#info > 2.21 7.51 0.27 238 1.13 7.65 Logger::Formatter#call > 2.18 7.78 0.27 238 1.12 1.12 File::Stat#initialize > 2.08 8.03 0.25 17 14.94 658.12 FileFormat:: > WavFile#getInfo > 1.71 8.24 0.21 238 0.88 1.00 MonitorMixin.mon_acquire > 1.70 8.45 0.21 87 2.38 4.87 FileFormat:: > WavFile#dataPos > 1.62 8.65 0.20 177 1.12 10.50 FileFormat:: > WavFile#readBigNum > 1.51 8.83 0.18 478 0.38 0.55 String#% > 1.44 9.01 0.18 238 0.74 8.39 Logger#format_message > 1.40 9.18 0.17 476 0.36 0.36 NilClass#nil? > 1.37 9.35 0.17 238 0.70 1.08 MonitorMixin.mon_release > 1.32 9.51 0.16 238 0.68 0.68 Time#strftime > 1.31 9.67 0.16 298 0.54 0.54 IO#pos= > 1.23 9.82 0.15 915 0.16 0.16 FileFormat::WavFile#file > 1.19 9.96 0.15 238 0.61 19.94 Logger::LogDevice#write > 1.10 10.10 0.13 952 0.14 0.14 ##critical= > 1.00 10.22 0.12 238 0.51 0.80 MonitorMixin. > mon_check_owner > 0.91 10.33 0.11 530 0.21 0.21 IO#getc > 0.85 10.43 0.10 238 0.43 0.43 Kernel.is_a? > 0.85 10.54 0.10 1060 0.10 0.10 Fixnum#* > 0.83 10.64 0.10 239 0.42 0.42 Array#[] > 0.81 10.74 0.10 476 0.21 0.21 Fixnum#> > 0.75 10.83 0.09 476 0.19 0.19 Array#shift > 0.72 10.91 0.09 965 0.09 0.09 Fixnum#+ > 0.71 11.00 0.09 8 10.75 1494.63 Array#each > 0.71 11.09 0.09 34 2.53 2.53 IO#read > 0.66 11.17 0.08 238 0.34 2.50 File#stat > 0.66 11.25 0.08 238 0.34 0.34 Time#usec > 0.64 11.33 0.08 238 0.33 0.33 NilClass#to_s > 0.62 11.40 0.08 238 0.32 0.32 Kernel.respond_to? > 0.61 11.47 0.07 35 2.11 11.74 FileFormat:: > WavFile#audioFormat > 0.57 11.54 0.07 344 0.20 0.21 Fixnum#== > 0.51 11.61 0.06 476 0.13 0.13 ##current > 0.40 11.65 0.05 238 0.21 0.21 Fixnum#< > 0.33 11.69 0.04 325 0.12 0.12 Kernel.== > 0.32 11.73 0.04 17 2.29 5.71 FileFormat::WavFile#exist? > 0.25 11.76 0.03 1 31.00 31.00 File#initialize > 0.25 11.79 0.03 222 0.14 0.14 Fixnum#to_s > 0.24 11.82 0.03 85 0.34 0.34 FileFormat:: > WavFile#fileDir > 0.21 11.85 0.02 238 0.11 0.11 Kernel.block_given? > 0.20 11.87 0.02 240 0.10 0.10 Time#initialize > 0.19 11.90 0.02 17 1.35 1.71 FileFormat:: > WavFile#readBytes > 0.19 11.92 0.02 238 0.10 0.10 ##pass > 0.17 11.94 0.02 17 1.24 16.71 FileFormat:: > WavFile#extraParamSize > 0.15 11.96 0.02 17 1.06 1.94 FileFormat:: > WavFile#openFile > 0.15 11.98 0.02 238 0.08 0.08 Module#=== > 0.14 11.99 0.02 355 0.05 0.05 Fixnum#- > 0.13 12.01 0.02 34 0.47 23.35 FileFormat:: > WavFile#subChunk2Size > 0.13 12.02 0.02 87 0.18 0.18 IO#readline > 0.10 12.04 0.01 18 0.67 16.67 FileFormat:: > WavFile#bitPerSample > 0.10 12.05 0.01 238 0.05 0.05 File::Stat#size > 0.09 12.06 0.01 238 0.05 0.05 Kernel.nil? > 0.08 12.07 0.01 1 10.00 801.00 FileFormat:: > FileConcat#concatFiles > 0.08 12.08 0.01 17 0.59 0.59 FileFormat:: > WavFile#initialize > 0.07 12.09 0.01 17 0.53 0.53 ##open > 0.07 12.10 0.01 34 0.26 0.38 FileFormat:: > WavFile#fileSize > 0.07 12.11 0.01 18 0.44 5.67 FileFormat:: > WavFile#sampleRate > 0.07 12.11 0.01 87 0.09 0.09 String#index > 0.05 12.12 0.01 9 0.67 4.78 FileFormat:: > FileConcat#writeData > 0.05 12.12 0.01 17 0.35 0.35 FileTest.exist? > 0.04 12.13 0.01 2 2.50 8.00 Integer#downto > 0.04 12.14 0.01 18 0.28 6.17 FileFormat:: > WavFile#subChunk1Size > 0.04 12.14 0.01 18 0.28 4.67 FileFormat:: > WavFile#blockAlign > 0.04 12.15 0.00 17 0.29 0.71 FileFormat:: > WavFile#chunkSize > 0.04 12.15 0.00 18 0.28 12.22 FileFormat:: > WavFile#byteRate > 0.03 12.15 0.00 34 0.12 0.12 FileTest.size > 0.03 12.16 0.00 44 0.09 0.09 IO#putc > 0.03 12.16 0.00 18 0.22 0.22 IO#to_io > 0.02 12.17 0.00 17 0.18 5.82 FileFormat:: > WavFile#extraParams > 0.02 12.17 0.00 2 1.50 3.50 Logger:: > LogDevice#create_logfile > 0.02 12.17 0.00 20 0.15 0.15 IO#close > 0.02 12.17 0.00 17 0.12 0.12 Array#<< > 0.02 12.18 0.00 8 0.25 0.25 ##rename > 0.02 12.18 0.00 28 0.07 0.07 Fixnum#<< > 0.02 12.18 0.00 56 0.04 0.04 Fixnum#>> > 0.02 12.18 0.00 18 0.11 8.94 FileFormat:: > WavFile#numChannels > 0.02 12.18 0.00 51 0.04 0.04 IO#eof > 0.01 12.18 0.00 2 0.50 2.00 Logger:: > LogDevice#add_log_header > 0.01 12.18 0.00 2 0.50 0.50 Time#to_s > 0.00 12.18 0.00 2 0.00 0.00 IO#sync= > 0.00 12.18 0.00 2 0.00 12.50 Logger:: > LogDevice#shift_log_age > 0.00 12.18 0.00 6 0.00 0.00 ##exist? > 0.00 12.18 0.00 1 0.00 0.00 Array#length > 0.00 12.18 0.00 2 0.00 0.00 Kernel.open > 0.00 12.18 0.00 1 0.00 31.00 FileFormat:: > FileConcat#initialize > 0.00 12.18 0.00 17 0.00 0.00 Array#to_s > 0.00 12.18 0.00 1 0.00 209.00 FileFormat:: > FileConcat#concat_data_block > 0.00 12.18 0.00 4 0.00 0.00 Fixnum#| > 0.00 12.18 0.00 4 0.00 1.00 FileFormat:: > FileConcat#writeBytes > 0.00 12.19 0.00 1 0.00 12187.00 #toplevel > > This performance of JRuby is rather bad. Reasons may come from: > 1. JRuby is in nature very slow. We can not do anything to this > 2. JRuby's startup time is longer than that of Ruby. I wonder this > situation would be improved if we have had on in-memory JVM > > > Peter K Chan wrote: > Not anymore, Nate. :) > > JRuby WAS slow six months ago, but it has come a long way. Check this out: > > http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance.html > > Summary: In interpretive mode, JRuby is no more than 2x slower, and > that's including JVM startup and lack of hotspot warm up. In > unoptimized compiled mode, JRuby often beats C Ruby. I have been using > JRuby in my project, and I haven't had any performance complaints > since 2 months ago. > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto: > chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > Sent: Tuesday, May 29, 2007 2:23 AM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Peter, > > JRuby is slow. Try RJB (http://rjb.rubyforge.org/) > > Nate > > Peter K Chan wrote: > Sure! I will be up for some Uger-hacking/feedback-taking (I also need to > apply Colin's patch from a while ago and push it out). > > Hmm...maybe I should think of a lightning talk on JRuby or something. > > Peter > > -----Original Message----- > From: chicagogroup-members-list-bounces at rubyforge.org > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > Evan Farrar > Sent: Monday, May 28, 2007 5:51 PM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Woohoo Lightning talks! I will definitely come with something. I also > would like to call together a uger hacksession if Peter Chang is > around for the meeting. > > On 5/28/07, Josh Cronemeyer wrote: > > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. If > > you can > > prepare something that you can get through in 10 minutes or so, please > > do. > > Alternatively you can put out a request for a talk on a certain topic > > and > > perhaps that will inspire somebody. I'm mulling over a topic just to > > force > > myself to learn something new (Why's camping framework). But I make > > no > > promises :) Let's have fun with this and take advantage of the chance > > for > > all of us to talk. No pressure!!!! > > http://chirb.org/event/show/18 > > Josh Cronemeyer > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: jruby_performance.txt Url: http://rubyforge.org/pipermail/chicagogroup-members-list/attachments/20070530/a6fbbd05/attachment-0001.txt From peter at oaktop.com Wed May 30 12:26:21 2007 From: peter at oaktop.com (Peter K Chan) Date: Wed, 30 May 2007 12:26:21 -0400 Subject: [Chirb] JRuby performance In-Reply-To: <465D85AD.3010700@yahoo.com> References: <465BF078.8050808@yahoo.com> <465CC5FD.7030505@yahoo.com> <465D85AD.3010700@yahoo.com> Message-ID: Nate, Thanks for getting back to me. I haven't seen the source for your benchmark, but I imagine that it may be doing some specific processing that JRuby is slow at (i.e. looking at the method names, it seems to be doing quite a bit of byte shuffling?). Also, just a guess, but the 8x difference worsening to 14x times may be due to JVM startup cost (a real possibility; once you step into single digit second run time). In any case, here is a link which explains how to tune JRuby for performance, including how to disable Object Space and turn on compiler: http://www.headius.com/jrubywiki/index.php/Performance_Tuning Just to put things in context: JRuby shines when you are doing integration with Java and long running server processes. One time scripts may still be a sore point for the foreseeable future, simply because of the JVM start-up and warm-up cost. Peter -----Original Message----- From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby Sent: Wednesday, May 30, 2007 9:10 AM To: Chirb discussion list Subject: Re: [Chirb] JRuby performance Peter, This is the reponse I got: ************* The JVM on my Ubuntu machine is Sun's: clive at epiphany:~$ java -version java version "1.6.0" Java(TM) SE Runtime Environment (build 1.6.0-b105) Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing) And I use the latest version of JRuby. I ran that piece of code with profiling again on my machine, which is very old one, C Ruby took 2.72 sec, JRuby took 22.78 sec. 8.375 times difference. Then I changed the code, took out profiler, and printed out the start time and finish time only, C Ruby took 0.27586 sec, JRuby took 4.074 sec: 14.768360763 times difference. The attachment is the raw data. I did not: -disable object space (I did some research, but have no idea of how to do that. The hotspot server seemed to have some option about size of object space, but I don't think it allows us to set the size to 0) -turn on the JRuby AOT or JIT compiler ( I have no idea of what that is) It seems that the performance under default setting is still bad. ************** Blessings, Nate Peter K Chan wrote: > Sure, Nate. > > I do concede that JRuby is not yet a Ruby drop in replacement, at least not for running small scripts. It takes only 5 minutes to tweak the performance, but it is still 5 minutes more than C Ruby. Where JRuby really shines is in Java integration and scalability (e.g. running multiple rails instances within a single JVM, connecting to a JDBC database). > > I would be very interested in seeing what kind of performance you get for your evaluation. > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > Sent: Tuesday, May 29, 2007 7:32 PM > To: Chirb discussion list > Subject: Re: [Chirb] JRuby performance > > Peter, > > I actually had someone else do it. I will forward your suggestions along to them. I have had the impression in the past that individual vendors VMs were often faster than Suns for their platform. That is possibly in error, but in the late 90's it was not. > > Thanks, > Nate > > Peter K Chan wrote: > Nate, > Josh has already brought up most of what I was going to reply to you, but let me just highlight these factors, which may explain your performance result: > > - Are you using a modern JVM, such as Sun 1.6.0, with hotspot/JIT compilation? > - Did you disable object space? (Makes a huge 20% - 40% difference, I disable it in all my apps) > - Did you pull the latest trunk or at least RC version of JRuby? > - Did you turn on the JRuby AOT or JIT compiler? > - I think that JRuby's set_trace_func is slow; therefore, if you use profile.rb, you may be incurring large profiling cost (actually, set_trace_func isn't working in current JRuby compiler, so you must have been running JRuby in pure interpretive mode). > > Also, keep in mind that the benchmark result I linked to include JVM startup time. If you consider that the JVM takes a few seconds to fully warm up, and most benchmark finishes in a few seconds, JRuby's result is even more impressive. > > Don't take my word for it. Run your benchmark with the right settings, and you can see for yourself. :) > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Josh Cronemeyer > Sent: Tuesday, May 29, 2007 11:11 AM > To: Chirb discussion list > Subject: [Chirb] JRuby performance > > > discussion moved from this thread: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Nate, > > I've heard alot of good stuff about jruby performance, not from just peter. > > > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > > I think you should run your tests with a real JVM (like sun's implementation). You are using gij which is a java interpretor. GIJ is a part of the GCJ project. GCJ is a very different beast than sun's implementation. The idea behind GCJ is that java is compiled down to your specific platform's machine code. So they bypass the jvm all together. This sounds like it would be faster, but it really isn't for many things because sun's just in time compilation can actually compile the same code in different ways depending on context in order to optimize execution. I'm not sure if Jruby uses runtime code loading or generation (i wouldn't be surprised though). If that is the case GCJ is SUPER slow for those types of operations because that is when the gij interpreter kicks in. The interpreter is realizing no benefits from optimization or compilation. > > The short of it: I wouldn't call my tests definitive until I was using sun's jvm. > > Josh Cronemeyer > > chicagogroup-members-list-bounces at rubyforge.org wrote on 05/29/2007 04:20:56 AM: > > > Peter, > > I can take your word for it....or I can check the performance stats we > just did a few weeks ago JRuby was 10x slower than ruby at the command > line on a Fedora box. > > Nate > > STATS > > [programmer at Mark ~]$ java --version > java version "1.4.2" > gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51) > > Copyright (C) 2006 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > I did not change the default JVM. I used the Ruby project > concatenating wav files and profiler to see the performance data. This > is the result: > Ruby: > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 10.24 0.13 0.13 238 0.55 1.13 MonitorMixin.mon_exit > 7.09 0.22 0.09 238 0.38 2.27 MonitorMixin.synchronize > 6.30 0.30 0.08 238 0.34 3.57 Logger#add > 5.51 0.37 0.07 238 0.29 0.34 Logger:: > Formatter#format_datetime > 4.72 0.43 0.06 17 3.53 68.82 FileFormat:: > WavFile#getInfo > 4.72 0.49 0.06 203 0.30 0.69 Integer#times > 3.94 0.54 0.05 238 0.21 0.42 Logger:: > LogDevice#check_shift_log > 3.15 0.58 0.04 238 0.17 0.25 MonitorMixin.mon_release > 3.15 0.62 0.04 238 0.17 0.34 MonitorMixin.mon_enter > 2.36 0.65 0.03 256 0.12 0.12 String#+ > 2.36 0.68 0.03 87 0.34 0.57 FileFormat:: > WavFile#dataPos > 2.36 0.71 0.03 177 0.17 0.85 FileFormat:: > WavFile#readBigNum > 2.36 0.74 0.03 530 0.06 0.06 IO#getc > 2.36 0.77 0.03 8 3.75 155.00 Array#each > 2.36 0.80 0.03 476 0.06 0.06 Thread#current > 2.36 0.83 0.03 238 0.13 0.13 Logger#format_severity > 2.36 0.86 0.03 238 0.13 0.21 MonitorMixin. > mon_check_owner > 2.36 0.89 0.03 952 0.03 0.03 Thread#critical= > 2.36 0.92 0.03 238 0.13 0.55 Logger::Formatter#call > 1.57 0.94 0.02 476 0.04 0.04 Array#shift > 1.57 0.96 0.02 1060 0.02 0.02 Fixnum#* > 1.57 0.98 0.02 238 0.08 0.08 Module#=== > 1.57 1.00 0.02 238 0.08 0.08 IO#stat > 1.57 1.02 0.02 87 0.23 0.23 IO#readline > 1.57 1.04 0.02 476 0.04 0.04 Fixnum#> > 1.57 1.06 0.02 965 0.02 0.02 Fixnum#+ > 0.79 1.07 0.01 17 0.59 2.94 FileFormat:: > WavFile#extraParams > 0.79 1.08 0.01 238 0.04 0.04 Kernel.nil? > 0.79 1.09 0.01 240 0.04 0.04 Time#initialize > 0.79 1.10 0.01 44 0.23 0.23 IO#putc > 0.79 1.11 0.01 34 0.29 0.29 FileFormat:: > WavFile#fileSize > 0.79 1.12 0.01 238 0.04 0.59 Logger#format_message > 0.79 1.13 0.01 34 0.29 0.29 IO#read > 0.79 1.14 0.01 17 0.59 0.59 FileFormat:: > WavFile#readBytes > 0.79 1.15 0.01 238 0.04 0.04 Time#usec > 0.79 1.16 0.01 238 0.04 0.04 Kernel.block_given? > 0.79 1.17 0.01 238 0.04 2.31 Logger::LogDevice#write > 0.79 1.18 0.01 18 0.56 0.56 FileFormat:: > WavFile#bitPerSample > 0.79 1.19 0.01 34 0.29 1.47 FileFormat:: > WavFile#subChunk2Size > 0.79 1.20 0.01 238 0.04 0.13 MonitorMixin.mon_acquire > 0.79 1.21 0.01 238 0.04 0.04 Fixnum#< > 0.79 1.22 0.01 238 0.04 3.61 Logger#info > 0.79 1.23 0.01 18 0.56 1.67 FileFormat:: > WavFile#sampleRate > 0.79 1.24 0.01 325 0.03 0.03 Kernel.== > 0.79 1.25 0.01 238 0.04 0.04 File::Stat#size > 0.79 1.26 0.01 240 0.04 0.08 Time#now > 0.79 1.27 0.01 344 0.03 0.03 Fixnum#== > 0.00 1.27 0.00 2 0.00 0.00 IO#sync= > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > WavFile#byteRate > 0.00 1.27 0.00 18 0.00 0.00 Class#new > 0.00 1.27 0.00 17 0.00 0.00 Array#to_s > 0.00 1.27 0.00 1 0.00 0.00 FileFormat:: > FileConcat#initialize > 0.00 1.27 0.00 18 0.00 0.00 IO#to_io > 0.00 1.27 0.00 35 0.00 0.00 FileFormat:: > WavFile#audioFormat > 0.00 1.27 0.00 238 0.00 0.08 Logger::Formatter#msg2str > 0.00 1.27 0.00 238 0.00 0.00 String#[] > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#openFile > 0.00 1.27 0.00 28 0.00 0.00 Fixnum#<< > 0.00 1.27 0.00 56 0.00 0.00 Fixnum#>> > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#create_logfile > 0.00 1.27 0.00 298 0.00 0.00 IO#pos= > 0.00 1.27 0.00 17 0.00 0.00 File#exist? > 0.00 1.27 0.00 238 0.00 0.00 Thread#pass > 0.00 1.27 0.00 238 0.00 0.00 NilClass#to_s > 0.00 1.27 0.00 17 0.00 0.00 Array#<< > 0.00 1.27 0.00 51 0.00 0.00 IO#eof? > 0.00 1.27 0.00 9 0.00 2.22 FileFormat:: > FileConcat#writeData > 0.00 1.27 0.00 2 0.00 0.00 Time#to_s > 0.00 1.27 0.00 17 0.00 0.00 FileFormat::WavFile#exist? > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#chunkSize > 0.00 1.27 0.00 238 0.00 0.00 Kernel.respond_to? > 0.00 1.27 0.00 1 0.00 0.00 IO#new > 0.00 1.27 0.00 238 0.00 0.00 Time#strftime > 0.00 1.27 0.00 4 0.00 0.00 Fixnum#| > 0.00 1.27 0.00 18 0.00 0.56 FileFormat:: > WavFile#blockAlign > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#extraParamSize > 0.00 1.27 0.00 6 0.00 0.00 FileTest.exist? > 0.00 1.27 0.00 17 0.00 0.00 IO#open > 0.00 1.27 0.00 355 0.00 0.00 Fixnum#- > 0.00 1.27 0.00 239 0.00 0.00 Array#[] > 0.00 1.27 0.00 18 0.00 1.67 FileFormat:: > WavFile#numChannels > 0.00 1.27 0.00 1 0.00 0.00 Array#size > 0.00 1.27 0.00 20 0.00 0.00 IO#close > 0.00 1.27 0.00 8 0.00 0.00 File#rename > 0.00 1.27 0.00 87 0.00 0.00 String#index > 0.00 1.27 0.00 17 0.00 0.00 FileFormat:: > WavFile#initialize > 0.00 1.27 0.00 1 0.00 90.00 FileFormat:: > FileConcat#concatFiles > 0.00 1.27 0.00 2 0.00 0.00 Kernel.open > 0.00 1.27 0.00 2 0.00 0.00 Integer#downto > 0.00 1.27 0.00 4 0.00 0.00 FileFormat:: > FileConcat#writeBytes > 0.00 1.27 0.00 1 0.00 30.00 FileFormat:: > FileConcat#concat_data_block > 0.00 1.27 0.00 476 0.00 0.00 NilClass#nil? > 0.00 1.27 0.00 20 0.00 0.00 File#initialize > 0.00 1.27 0.00 478 0.00 0.00 String#% > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#add_log_header > 0.00 1.27 0.00 18 0.00 2.78 FileFormat:: > WavFile#subChunk1Size > 0.00 1.27 0.00 2 0.00 0.00 Logger:: > LogDevice#shift_log_age > 0.00 1.27 0.00 318 0.00 0.00 IO#write > 0.00 1.27 0.00 238 0.00 0.00 String#<< > 0.00 1.27 0.00 238 0.00 0.00 Kernel.is_a? > 0.00 1.27 0.00 222 0.00 0.00 Fixnum#to_s > 0.00 1.27 0.00 34 0.00 0.00 File#size > 0.00 1.27 0.00 1 0.00 1270.00 #toplevel > > JRuby: > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 10.27 1.25 1.25 203 6.17 7.84 Integer#times > 9.64 2.43 1.17 238 4.94 36.55 Logger#add > 6.57 3.23 0.80 238 3.37 5.86 MonitorMixin.mon_exit > 5.23 3.86 0.64 238 2.68 4.19 Logger:: > Formatter#format_datetime > 4.92 4.46 0.60 238 2.52 19.33 MonitorMixin. > mon_synchronize > 4.37 5.00 0.53 274 1.95 1.95 IO#write > 4.12 5.50 0.50 238 2.11 5.62 Logger:: > LogDevice#check_shift_log > 3.36 5.91 0.41 238 1.72 3.01 MonitorMixin.mon_enter > 3.23 6.30 0.39 497 0.79 1.52 Class#new > 3.08 6.68 0.38 238 1.58 1.65 Logger::Formatter#msg2str > 2.33 6.96 0.28 238 1.19 1.62 Logger#format_severity > 2.33 7.24 0.28 238 1.19 37.75 Logger#info > 2.21 7.51 0.27 238 1.13 7.65 Logger::Formatter#call > 2.18 7.78 0.27 238 1.12 1.12 File::Stat#initialize > 2.08 8.03 0.25 17 14.94 658.12 FileFormat:: > WavFile#getInfo > 1.71 8.24 0.21 238 0.88 1.00 MonitorMixin.mon_acquire > 1.70 8.45 0.21 87 2.38 4.87 FileFormat:: > WavFile#dataPos > 1.62 8.65 0.20 177 1.12 10.50 FileFormat:: > WavFile#readBigNum > 1.51 8.83 0.18 478 0.38 0.55 String#% > 1.44 9.01 0.18 238 0.74 8.39 Logger#format_message > 1.40 9.18 0.17 476 0.36 0.36 NilClass#nil? > 1.37 9.35 0.17 238 0.70 1.08 MonitorMixin.mon_release > 1.32 9.51 0.16 238 0.68 0.68 Time#strftime > 1.31 9.67 0.16 298 0.54 0.54 IO#pos= > 1.23 9.82 0.15 915 0.16 0.16 FileFormat::WavFile#file > 1.19 9.96 0.15 238 0.61 19.94 Logger::LogDevice#write > 1.10 10.10 0.13 952 0.14 0.14 ##critical= > 1.00 10.22 0.12 238 0.51 0.80 MonitorMixin. > mon_check_owner > 0.91 10.33 0.11 530 0.21 0.21 IO#getc > 0.85 10.43 0.10 238 0.43 0.43 Kernel.is_a? > 0.85 10.54 0.10 1060 0.10 0.10 Fixnum#* > 0.83 10.64 0.10 239 0.42 0.42 Array#[] > 0.81 10.74 0.10 476 0.21 0.21 Fixnum#> > 0.75 10.83 0.09 476 0.19 0.19 Array#shift > 0.72 10.91 0.09 965 0.09 0.09 Fixnum#+ > 0.71 11.00 0.09 8 10.75 1494.63 Array#each > 0.71 11.09 0.09 34 2.53 2.53 IO#read > 0.66 11.17 0.08 238 0.34 2.50 File#stat > 0.66 11.25 0.08 238 0.34 0.34 Time#usec > 0.64 11.33 0.08 238 0.33 0.33 NilClass#to_s > 0.62 11.40 0.08 238 0.32 0.32 Kernel.respond_to? > 0.61 11.47 0.07 35 2.11 11.74 FileFormat:: > WavFile#audioFormat > 0.57 11.54 0.07 344 0.20 0.21 Fixnum#== > 0.51 11.61 0.06 476 0.13 0.13 ##current > 0.40 11.65 0.05 238 0.21 0.21 Fixnum#< > 0.33 11.69 0.04 325 0.12 0.12 Kernel.== > 0.32 11.73 0.04 17 2.29 5.71 FileFormat::WavFile#exist? > 0.25 11.76 0.03 1 31.00 31.00 File#initialize > 0.25 11.79 0.03 222 0.14 0.14 Fixnum#to_s > 0.24 11.82 0.03 85 0.34 0.34 FileFormat:: > WavFile#fileDir > 0.21 11.85 0.02 238 0.11 0.11 Kernel.block_given? > 0.20 11.87 0.02 240 0.10 0.10 Time#initialize > 0.19 11.90 0.02 17 1.35 1.71 FileFormat:: > WavFile#readBytes > 0.19 11.92 0.02 238 0.10 0.10 ##pass > 0.17 11.94 0.02 17 1.24 16.71 FileFormat:: > WavFile#extraParamSize > 0.15 11.96 0.02 17 1.06 1.94 FileFormat:: > WavFile#openFile > 0.15 11.98 0.02 238 0.08 0.08 Module#=== > 0.14 11.99 0.02 355 0.05 0.05 Fixnum#- > 0.13 12.01 0.02 34 0.47 23.35 FileFormat:: > WavFile#subChunk2Size > 0.13 12.02 0.02 87 0.18 0.18 IO#readline > 0.10 12.04 0.01 18 0.67 16.67 FileFormat:: > WavFile#bitPerSample > 0.10 12.05 0.01 238 0.05 0.05 File::Stat#size > 0.09 12.06 0.01 238 0.05 0.05 Kernel.nil? > 0.08 12.07 0.01 1 10.00 801.00 FileFormat:: > FileConcat#concatFiles > 0.08 12.08 0.01 17 0.59 0.59 FileFormat:: > WavFile#initialize > 0.07 12.09 0.01 17 0.53 0.53 ##open > 0.07 12.10 0.01 34 0.26 0.38 FileFormat:: > WavFile#fileSize > 0.07 12.11 0.01 18 0.44 5.67 FileFormat:: > WavFile#sampleRate > 0.07 12.11 0.01 87 0.09 0.09 String#index > 0.05 12.12 0.01 9 0.67 4.78 FileFormat:: > FileConcat#writeData > 0.05 12.12 0.01 17 0.35 0.35 FileTest.exist? > 0.04 12.13 0.01 2 2.50 8.00 Integer#downto > 0.04 12.14 0.01 18 0.28 6.17 FileFormat:: > WavFile#subChunk1Size > 0.04 12.14 0.01 18 0.28 4.67 FileFormat:: > WavFile#blockAlign > 0.04 12.15 0.00 17 0.29 0.71 FileFormat:: > WavFile#chunkSize > 0.04 12.15 0.00 18 0.28 12.22 FileFormat:: > WavFile#byteRate > 0.03 12.15 0.00 34 0.12 0.12 FileTest.size > 0.03 12.16 0.00 44 0.09 0.09 IO#putc > 0.03 12.16 0.00 18 0.22 0.22 IO#to_io > 0.02 12.17 0.00 17 0.18 5.82 FileFormat:: > WavFile#extraParams > 0.02 12.17 0.00 2 1.50 3.50 Logger:: > LogDevice#create_logfile > 0.02 12.17 0.00 20 0.15 0.15 IO#close > 0.02 12.17 0.00 17 0.12 0.12 Array#<< > 0.02 12.18 0.00 8 0.25 0.25 ##rename > 0.02 12.18 0.00 28 0.07 0.07 Fixnum#<< > 0.02 12.18 0.00 56 0.04 0.04 Fixnum#>> > 0.02 12.18 0.00 18 0.11 8.94 FileFormat:: > WavFile#numChannels > 0.02 12.18 0.00 51 0.04 0.04 IO#eof > 0.01 12.18 0.00 2 0.50 2.00 Logger:: > LogDevice#add_log_header > 0.01 12.18 0.00 2 0.50 0.50 Time#to_s > 0.00 12.18 0.00 2 0.00 0.00 IO#sync= > 0.00 12.18 0.00 2 0.00 12.50 Logger:: > LogDevice#shift_log_age > 0.00 12.18 0.00 6 0.00 0.00 ##exist? > 0.00 12.18 0.00 1 0.00 0.00 Array#length > 0.00 12.18 0.00 2 0.00 0.00 Kernel.open > 0.00 12.18 0.00 1 0.00 31.00 FileFormat:: > FileConcat#initialize > 0.00 12.18 0.00 17 0.00 0.00 Array#to_s > 0.00 12.18 0.00 1 0.00 209.00 FileFormat:: > FileConcat#concat_data_block > 0.00 12.18 0.00 4 0.00 0.00 Fixnum#| > 0.00 12.18 0.00 4 0.00 1.00 FileFormat:: > FileConcat#writeBytes > 0.00 12.19 0.00 1 0.00 12187.00 #toplevel > > This performance of JRuby is rather bad. Reasons may come from: > 1. JRuby is in nature very slow. We can not do anything to this > 2. JRuby's startup time is longer than that of Ruby. I wonder this > situation would be improved if we have had on in-memory JVM > > > Peter K Chan wrote: > Not anymore, Nate. :) > > JRuby WAS slow six months ago, but it has come a long way. Check this out: > > http://headius.blogspot.com/2007/04/paving-road-to-jruby-10-performance. html > > Summary: In interpretive mode, JRuby is no more than 2x slower, and > that's including JVM startup and lack of hotspot warm up. In > unoptimized compiled mode, JRuby often beats C Ruby. I have been using > JRuby in my project, and I haven't had any performance complaints > since 2 months ago. > > Peter > ________________________________________ > From: chicagogroup-members-list-bounces at rubyforge.org [mailto: > chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of Nate Kirby > Sent: Tuesday, May 29, 2007 2:23 AM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Peter, > > JRuby is slow. Try RJB (http://rjb.rubyforge.org/) > > Nate > > Peter K Chan wrote: > Sure! I will be up for some Uger-hacking/feedback-taking (I also need to > apply Colin's patch from a while ago and push it out). > > Hmm...maybe I should think of a lightning talk on JRuby or something. > > Peter > > -----Original Message----- > From: chicagogroup-members-list-bounces at rubyforge.org > [mailto:chicagogroup-members-list-bounces at rubyforge.org] On Behalf Of > Evan Farrar > Sent: Monday, May 28, 2007 5:51 PM > To: Chirb discussion list > Subject: Re: [Chirb] time to rsvp for the mystery meeting! W00t > > Woohoo Lightning talks! I will definitely come with something. I also > would like to call together a uger hacksession if Peter Chang is > around for the meeting. > > On 5/28/07, Josh Cronemeyer wrote: > > Ok, nobody signed up for the talk and we are a week away from the next > CHIRB. Soooo, unless anyone objects I think we should have another > "lightning talk / code pit" session like the one last december. If > > you can > > prepare something that you can get through in 10 minutes or so, please > > do. > > Alternatively you can put out a request for a talk on a certain topic > > and > > perhaps that will inspire somebody. I'm mulling over a topic just to > > force > > myself to learn something new (Why's camping framework). But I make > > no > > promises :) Let's have fun with this and take advantage of the chance > > for > > all of us to talk. No pressure!!!! > > http://chirb.org/event/show/18 > > Josh Cronemeyer > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > > > _______________________________________________ > ChicagoGroup-Members-List at rubyforge.org > http://rubyforge.org/mailman/listinfo/chicagogroup-members-list > > >