[#35036] Intentional Programming — "John" <nojgoalbyspam@...>

Hi all

17 messages 2002/03/01

[#35112] RDoc question — Michael Davis <mdavis@...>

I have a question about RDoc. I would like to reference an external

17 messages 2002/03/02

[#35162] string to array and back — Ron Jeffries <ronjeffries@...>

I am needing to convert strings to arrays of bytes and back. I see pack and

19 messages 2002/03/03

[#35364] file reading impossibly slow? — Ron Jeffries <ronjeffries@...>

So I'm doing this benchmark to work with my set program. Part of the problem is

18 messages 2002/03/07

[#35429] Interesting link on static/dynamic typing... — Robert Feldt <feldt@...>

...relevant to Ruby compared to other languages discussion:

25 messages 2002/03/08
[#35441] Re: Interesting link on static/dynamic typing... — Paul Brannan <paul@...> 2002/03/08

On Fri, Mar 08, 2002 at 05:34:43PM +0900, Robert Feldt wrote:

[#35460] Spam, ruby-talk, and me — Dave Thomas <Dave@...>

14 messages 2002/03/08

[#35537] Confusion — David Corbin <dcorbin@...>

The following is from my debugging through xmlc.rb

16 messages 2002/03/10

[#35579] RE: WIN32OLE and LDAP — "Morris, Chris" <chris.morris@...>

> The new version 0.4.2 of Win32OLE has WIN32OLE.bind method.

16 messages 2002/03/11

[#35652] Method type 'abstract' — Peter Hickman <peter@...>

The one thing I miss in Ruby is the abstract class method to go along

15 messages 2002/03/12

[#35653] Some potential RCRs — "Bob Alexander" <bobalex@...>

Here are a few thing I am considering submitting as RCRs. I'm looking =

50 messages 2002/03/12
[#35672] Re: Some potential RCRs — matz@... (Yukihiro Matsumoto) 2002/03/12

Hi,

[#35683] Re: Some potential RCRs — Massimiliano Mirra <list@...> 2002/03/12

On Wed, Mar 13, 2002 at 03:58:01AM +0900, Yukihiro Matsumoto wrote:

[#35697] Re: Some potential RCRs — David Alan Black <dblack@...> 2002/03/13

Hello --

[#35694] rpkg 0.3 — Massimiliano Mirra <list@...>

14 messages 2002/03/13
[#35699] RE: [ANN] rpkg 0.3 — <james@...> 2002/03/13

>

[#35787] testunit - setup -> set_up ? — "Morris, Chris" <chris.morris@...>

I'm just starting to use testunit instead of rubyunit ... I noticed with an

21 messages 2002/03/13
[#35793] RE: testunit - setup -> set_up ? — "Nathaniel Talbott" <nathaniel@...> 2002/03/13

Morris, Chris [mailto:chris.morris@snelling.com] wrote:

[#35796] Re: testunit - setup -> set_up ? — Dave Thomas <Dave@...> 2002/03/13

"Nathaniel Talbott" <nathaniel@talbott.ws> writes:

[#35797] RE: testunit - setup -> set_up ? — "Nathaniel Talbott" <nathaniel@...> 2002/03/13

dave@thomases.com [mailto:dave@thomases.com] wrote:

[#35898] camelCase and underscore_style — "Morris, Chris" <chris.morris@...>

First, a question. If underscore_style is the Ruby norm for methods and the

20 messages 2002/03/15
[#35924] Re: camelCase and underscore_style — "Guy N. Hurst" <gnhurst@...> 2002/03/15

Phil Tomson wrote:

[#35930] RE: camelCase and underscore_style — "Nathaniel Talbott" <nathaniel@...> 2002/03/16

Guy N. Hurst [mailto:gnhurst@hurstlinks.com] wrote:

[#35989] ANN: Locana GUI and GUI Builder version 0.81 — Michael Davis <mdavis@...>

I am pleased to announce release 0.81 of Locana. Locana is a GUI

16 messages 2002/03/16

[#35992] XPath — Michael Schuerig <schuerig@...>

27 messages 2002/03/16

[#36034] Mini Rant: Indenting — Thomas Hurst <tom.hurst@...>

Why is it that I see *so* much code like:

14 messages 2002/03/17

[#36049] web templating for static sites? — Massimiliano Mirra <list@...>

I'm using the Template Toolkit for generating static web sites and I

42 messages 2002/03/17
[#36426] web standars (was: web templating for static sites?) — Tobias Reif <tobiasreif@...> 2002/03/20

Albert Wagner wrote:

[#36052] Xml Serialization for Ruby — "Chris Morris" <chrismo@...>

=Xml Serialization for Ruby

20 messages 2002/03/17
[#36059] Re: [ANN] Xml Serialization for Ruby — Massimiliano Mirra <list@...> 2002/03/17

On Mon, Mar 18, 2002 at 05:20:56AM +0900, Chris Morris wrote:

[#36067] eval/Module question — David Corbin <dcorbin@...>

If I have a String src that is similar to the following:

13 messages 2002/03/18

[#36157] Development of Windows version of Ruby — ptkwt@...1.aracnet.com (Phil Tomson)

Now that we've dumped the cygwin requirement for the Windows version of

63 messages 2002/03/18
[#36330] Re: Development of Windows version of Ruby — Ron Jeffries <ronjeffries@...> 2002/03/19

On Tue, 19 Mar 2002 14:05:27 GMT, "Albert L. Wagner" <alwagner@uark.edu> wrote:

[#36431] Re: Development of Windows version of Ruby — Dennis Newbold <dennisn@...> 2002/03/20

[#36458] Windows version of Ruby (proposals) — ptkwt@... (Phil Tomson) 2002/03/21

Dennis Newbold <dennisn@pe.net> wrote in message news:<Pine.GSO.3.96.1020320113603.22242B-100000@shell2>...

[#36482] RE: Windows version of Ruby (proposals) — "Christian Boos" <cboos@...> 2002/03/21

Some thoughts on the 2 first Windows issues, plus a 4th one...

[#36496] Re: Windows version of Ruby (proposals) — Dave Thomas <Dave@...> 2002/03/21

"Christian Boos" <cboos@bct-technology.com> writes:

[#36510] Re: Windows version of Ruby (proposals) — nobu.nokada@... 2002/03/21

Hi,

[#36514] Re: Windows version of Ruby (proposals) — Dave Thomas <Dave@...> 2002/03/21

nobu.nokada@softhome.net writes:

[#36518] Re: Windows version of Ruby (proposals) — nobu.nokada@... 2002/03/21

Hi,

[#36211] dots in Dir.entries — matz@... (Yukihiro Matsumoto)

Hi,

22 messages 2002/03/19

[#36231] style choice — Ron Jeffries <ronjeffries@...>

A style question for the community ... which of the following do you prefer, and

18 messages 2002/03/19

[#36345] ANN: REXML 2.0 — Sean Russell <ser@...>

I have a feeling there will only be three major revisions of REXML. Version

19 messages 2002/03/20

[#36610] Re: Windows version of Ruby (proposals) — Ron Jeffries <ronjeffries@...>

On Thu, 21 Mar 2002 14:11:55 GMT, Dave Thomas <Dave@PragmaticProgrammer.com> wrote:

16 messages 2002/03/22

[#36645] Ruby for Mac OS 10.1 — Jim Freeze <jim@...>

Hi:

28 messages 2002/03/23

[#36768] Re: Difference between 'do' and 'begin' — Clemens Hintze <c.hintze@...>

In <slrna9ulvi.f2h.mwg@fluffy.isd.dp.ua> Wladimir Mutel <mwg@fluffy.isd.dp.ua> writes:

23 messages 2002/03/26
[#36783] RE: Difference between 'do' and 'begin' — <james@...> 2002/03/26

[#36792] Re: Difference between 'do' and 'begin' — Kent Dahl <kentda@...> 2002/03/26

james@rubyxml.com wrote:

[#36808] Error calling Tk in a loop — <james@...>

I'm trying to write some code that pops up a Tk window when for certain

15 messages 2002/03/26

[#36841] RE: Windows version of Ruby (proposals) — "Andres Hidalgo" <sol123@...>

I believe that Ruby has a place in windows (Office), I happened to have

14 messages 2002/03/27

[#36863] Hash.new(Hash.new) doesn't use Hash.new as default value — "Jonas Delfs" <jonas@...>

Hi -

18 messages 2002/03/27

[#37080] Why isn't Math object-oriented? — Bil Kleb <W.L.Kleb@...>

So I'm reading along in the Pixaxe book (yet again), and I am told

15 messages 2002/03/30

[#37121] String#begins?(s) — timsuth@... (Tim Sutherland)

class String

24 messages 2002/03/31

Some Windows (re | bench)marks (Re: building latest cvs ruby on win)

From: "Christoph" <chr_news@...>
Date: 2002-03-21 04:04:47 UTC
List: ruby-talk #36459
<nobu.nokada@softhome.net> wrote in
....
>
> Sorry, I've missed ext/configsub.rb and fixed now.

Thank you very much for the quick fix ... however there an old build
problem (under VS6 and VS7) still remains  The culprit is

mswin32-ruby17.def (generated by mkexport.rb).

The offending lines look like

---
....
SafeFree
Win32System
_real@0000000000000000
_real@3eb0c6f7a0b5ed8d
....
_real@bff0000000000000
_real@c1d0000000000000
chown
closedir
....
----

Without removing _real@0000000000000000 ... (this must be done during
the build process) the build fails with a link error complaining about missing
symbols.  Additionally it is probably save to remove all non human readable
symbols from the export list in mswin32-ruby.def.  Besides shrinking
mswin*.dll in size it also has a measurable  performance effect
( ~ 10-15 % in the test script below).

Using a full /Ox optimization (this includes a frame-pointer optimization)
removes all of the non-readable symbols from the export list and adds
another  ~ 10 - 15 % speed improvement in my test script below.
Unfortunately running ``nmake test'' (or installing) uncovers a problem with
printf - for example

---
ruby -e 'printf "bla %d bla %s\n", 2,Object'
---
-e:1:in `printf': failed to convert Class into Integer (TypeError)
        from -e:1
---

Given the not insignificant performance increase it might be a good idea
to further investigate this issue.  At a first glance I did not find any other
problem associated to the usage of a full /Ox optimization - for example
``nmake test''  succeeds after modifying the ``printf'' lines of the
``sample/test.rb'' file  in Ruby;s cvs-source tree.


The biggest performance booster is a switch of compliers: Using the
VS7-C++  compiler over a  VS6-C++ compiler results in a executable
which is a whopping  ~75 % faster (in my test case that is).
To put in  perspective:  A ``VS7-C++ & /Ox'' compiled cvs-Ruby  is

~   10 % faster as an aggressively complied Cygwin cvs-Ruby.
~ 100 % faster as VS6-C++ compiled cvs-Ruby (with stock optimizations)
~ 150 % faster than the current Prag-Prog Ruby

/Christoph


----
##  The test script is a modified version of my ``entry'' in the addagram
##  contest. I use a ~ 1/4 million wordlist.

require 'benchmark'
def Benchmark.times
  Process::times
end

class Solve
    Min = 3
    Max = 30

    def initialize(file)
        succ = Terminal.new
        @table = (Min..Max).collect do
        # @table = Array.new(Max - Min+1) do
            curr   = succ
            succ  = Normal.new curr
            curr
        end
        Benchmark::bm(9)  do |x|
          x.report('build up:') {
          File.open(file).read.split.each do |wrd|
            unless (len = wrd.length - Min ) < 0
              @table[len].set_wrd(wrd)
            end
          end
          }
          @solve = nil
          x.report('solve   :') {
          (Max-Min).downto(0) do |i|
            break if @solve = @table[i].solve
          end
          }
        end
    end

    attr_reader :solve

    private

    Terminal = Hash.clone
    class Terminal
        tmp =[180643669, 1,13,705643 ,81806611,113,257,569, 37047091,2749,
             6089,13441,29683,65537,7597757,319567, 23 ,1558177,3440719,
             144719,16777213, 1249, 53,  5, 398893589,880828517]

         @@weight = Array.new(65).concat(tmp.concat(Array.new(6).concat(tmp)))

        tmp = instance_methods - Object.instance_methods

        def __solve(hsh)
            return [ fetch(hsh) { return nil } ]
        end

       def solve
            length.zero?  ?  nil : [to_a[0][1]]
       end

       def set_wrd(wrd)
            hsh = 0
            wrd.each_byte { |b| hsh+=  @@weight[b] }
            store(hsh,wrd)
        end

        def verify(s,t,remove_byte)
            tmp = t.unpack("c*")
            tmp.each_index do |i|
                if i == remove_byte
                    tmp.delete_at(i)
                    return s.unpack("c*").sort.pack("c*") \
                           == tmp.sort.pack("c*")
                end
            end
        end

        #   removing unnecessary methods has no measurable effect
        # on performance and is for esthetics only ...

        tmp -= ["[]","store","fetch","each","to_a","delete"]
        tmp.each {|m| remove_method m }
    end

    class Normal < Terminal
        def initialize(prev)
            @prev = prev
        end
        def __solve(hsh)
            wrd = fetch(hsh) {return nil}
            wrd.each_byte do |b|
                if  res = @prev.__solve(hsh- @@weight[b])
                    return res.unshift(wrd) if verify(res[0],wrd,b)
                end
            end
            delete(hsh)
            return nil
        end
        def solve
            each do |hsh,wrd|
                wrd.each_byte do |b|
                    if res = @prev.__solve(hsh- @@weight[b])
                        return res.unshift(wrd) if verify(res[0],wrd,b)
                    end
                end
            end
            return nil
        end
    end
end

problem = Solve.new('LongList.txt')
puts problem.solve
-----




In This Thread