From: Sean Russell Date: 2001-05-26T08:32:17+09:00 Subject: [ruby-talk:15740] Re: java based interpreter and regexes --------------Boundary-00=_I10XHDYNUTLMB9KMIHGM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Je Vendredo 25 Majo 2001 15:17, vi skribis: > Jython uses the Apache Perl5 ripoff regex engine: > org.apache.oro.text.regex > > It seems to be reasonably fast. This regex package (from the Apache subproject Jakarta) is (now) known as "regexp"; it is available from http://jakarta.apache.org/regexp. The package structure is now org.apache.regexp.*. This code is derived from the OROInc regexp distribution by Jonathan Locke. There's also another one from gnu, that is packaged under gnu.regexp.* I wrote a little benchmark to test Ruby vs. org.apache.regexp. The sources are attached (sorry). I ran each three times in a row, with no other (user induced) computer activity, and took the last result. The results are: Java: 26.07s user 0.48s system 97% cpu 27.175 total Ruby: 9.74s user 0.05s system 97% cpu 10.084 total So Ruby is about 2.5 times faster. Not suprising, considering that regular expressions in Ruby are handled by native code. I don't think the Java lib is too slow. > > Is it open source and available for a ruby license project? Yes. > > If no such implementation is available for us, does anyone of the many of > > us who would like to participate in a java-based ruby interpreter project > > feel comfortable implementing a compatible regex engine that also > > performs well? You'd better spend your time providing performance enhancements to some existing regex implementation. > > Anyway, I don't mean to cast clouds on the project, I just think this is > > one of the most important issues to address. > > Agreed. Ditto. === SER Deutsch|Esperanto|Francaise|Linux|Java|Ruby|Aikido|Dirigibles|GPG === http://www.germane-software.com/~ser jabber.com:ser ICQ:83578737 "If anyone here believes in telekinesis, raise my hand." -- W. Blaine Dowler -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.2 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE7Dut3P0KxygnleI8RAsNrAJ95mZep3bnvBtj62NaHDAu4vh127QCguSE9 7LUxWwES1NTUoQxWT2LbdqI= =p2Ds -----END PGP SIGNATURE----- --------------Boundary-00=_I10XHDYNUTLMB9KMIHGM Content-Type: text/x-java; charset="iso-8859-1"; name="regtest.java" Content-Transfer-Encoding: base64 Content-Description: Regular expression test in Java Content-Disposition: attachment; filename="regtest.java" aW1wb3J0IG9yZy5hcGFjaGUucmVnZXhwLio7CgpwdWJsaWMgY2xhc3MgcmVndGVzdCB7Cglwcml2 YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBfcmUgPSB7CgkJIl4oKFteOl0rKTovLyk/KFteOi9d KykoOihbMC05XSspKT8oLy4qKSIsCS8vIFVSTCBtYXRjaAoJCSJ1c2QgWystXT9bMC05XSsuWzAt OV1bMC05XSIsCQkJCQkJLy8gQ2Fub25pY2FsIFVTIGRvbGxhciBhbW91bnQKCQkiXFxiKFxcdysp KFxccytcXDEpK1xcYiIsCQkJCQkJCQkvLyBEdXBsaWNhdGUgd29yZHMKCX07Cglwcml2YXRlIHN0 YXRpYyBmaW5hbCBTdHJpbmdbXSBfc3RyID0gewoJCSJodHRwOi8vd3d3LmxpbnV4LmNvbS8iLAoJ CSJodHRwOi8vd3d3LnRoZWxpbnV4c2hvdy5jb20vbWFpbi5waHAzIiwKCQkidXNkIDEyMzQuMDAi LAoJCSJoZSBzYWlkIHNoZSBzYWlkIGhlIHNhaWQgbm8iCgl9OwoJcHVibGljIHN0YXRpYyBmaW5h bCB2b2lkIG1haW4oIFN0cmluZ1tdIGFyZ3MgKSB7CgkJdHJ5IHsKCQkJZm9yIChpbnQgcmVnbnVt ID0gMDsgcmVnbnVtIDwgX3JlLmxlbmd0aDsgcmVnbnVtKyspIHsKCQkJCVJFIHJlZ2V4cHIgPSBu ZXcgUkUoX3JlW3JlZ251bV0pOwoJCQkJZm9yIChpbnQgaXR0ZXI9MDsgaXR0ZXI8MTAwMDA7IGl0 dGVyKyspeyAKCQkJCQlmb3IgKGludCBzdHJudW09MDtzdHJudW08X3N0ci5sZW5ndGg7c3RybnVt KyspCgkJCQkJCXJlZ2V4cHIubWF0Y2goIF9zdHJbc3RybnVtXSApOwoJCQkJfQoJCQl9CgkJfSBj YXRjaCAoRXhjZXB0aW9uIGUpIHsKCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKCQl9Cgl9Cn0K --------------Boundary-00=_I10XHDYNUTLMB9KMIHGM Content-Type: text/plain; charset="iso-8859-1"; name="regtest.rb" Content-Transfer-Encoding: base64 Content-Description: Regular expression test in Ruby Content-Disposition: attachment; filename="regtest.rb" cmUgPSBbICJeKChbXjpdKyk6Ly8pPyhbXjovXSspKDooWzAtOV0rKSk/KC8uKikiLAkjIFVSTCBt YXRjaAoJCSJ1c2QgWystXT9bMC05XSsuWzAtOV1bMC05XSIsCQkJCQkJIyBDYW5vbmljYWwgVVMg ZG9sbGFyIGFtb3VudAoJCSJcXGIoXFx3KykoXFxzK1xcMSkrXFxiIiBdCQkJCQkJCSMgRHVwbGlj YXRlIHdvcmRzCnN0ciA9IFsgImh0dHA6Ly93d3cubGludXguY29tLyIsCgkJImh0dHA6Ly93d3cu dGhlbGludXhzaG93LmNvbS9tYWluLnBocDMiLAoJCSJ1c2QgMTIzNC4wMCIsCgkJImhlIHNhaWQg c2hlIHNhaWQgaGUgc2FpZCBubyIgXQoKYmVnaW4KCXJlLmxlbmd0aC50aW1lcyBkbyB8cmVnbnVt fAoJCXJlZ2V4cHIgPSBSZWdleHAubmV3KCByZVtyZWdudW1dICkKCQkxMDAwMC50aW1lcyBkbyB8 aXR0ZXJ8CgkJCXN0ci5sZW5ndGgudGltZXMgZG8gfHN0cm51bXwKCQkJCXJlZ2V4cHIubWF0Y2go IHN0cltzdHJudW1dICkKCQkJZW5kCgkJZW5kCgllbmQKcmVzY3VlCglwdXRzICQhCmVuZAo= --------------Boundary-00=_I10XHDYNUTLMB9KMIHGM--