[#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 for comments to help decide whether to make them official, so please let know what you think is good and bad about these...

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