Sergey,
I wouldn't say its a bug, but that its a fine example of how
different coding techniques can affect performance.
In your first code example Ruby has to perform the regular expression
check
once in each loop, on every element in the set (that's 111 loops and
111 checks).
While in your second example the RegExp check is only performed
once to limit the number of elements in the set. Then only the
elements remaining in that subset are looped.
Thus there are both less RegExp checks and less loops to be performed.
Thus it makes sense that the second example will run faster:
Less loops means faster execution
Fewer RegExp checks also means faster execution
Joe
> $ie.checkboxes.each do |c|
> next unless c.id =~ /ctl00_cph_rpt.*?Notif.*?_eml_ctl\d+_chkEmail/
> $ie.checkbox(:id,c.id).set
> end
>
> execution time = 68 seconds
>
> but
> $ie.elements(:id,/ctl00_cph_rpt.*?Notif.*?_eml_ctl\d+_chkEmail/).each
> do |c|
> $ie.checkbox(:id,c.id).set
> end
>
> execution time = 3 second
>
> maybe it's a bug ?
>
> p.s. IE6/IE9 winxp/WIn7
> ruby 1.8.7
> watir 1.8.1
--
Before posting, please read http://watir.com/support. In short: search before
you ask, be nice.
[email protected]
http://groups.google.com/group/watir-general
[email protected]