Robert Klemme, 20/2/2005 12:04: > "Yukihiro Matsumoto" <matz / ruby-lang.org> schrieb im Newsbeitrag > news:1108909479.514053.4734.nullmailer / x31.priv.netlab.jp... >> In message "Re: destructive! operations" >> on Sun, 20 Feb 2005 17:22:34 +0900, Navindra Umanee >> <navindra / cs.mcgill.ca> writes: >> >> |Is it more efficient to use the destructive versions of functions in >> |Ruby? I know that in Lisp/Scheme destructive counterparts are usually >> |offered for efficiency reasons. >> | >> |Can I assume that string.gsub! is preferable to string.gsub when I >> |know that the side-effect won't be affecting any other code? >> >> Although most (not all) of bang methods are more efficient than their >> counterparts, I discourage the use of them unless the performance is >> really problem. "Premature optimization is the source of all evil". > > > Although I agree to the latter statement, I beg to differ on the general > remark - at least a bit. I often use this > > while ( line = gets ) > line.chomp! > # work with line > end > > because I know it's going to be potentially invoked often - even in > scripts that are likely to run only on small input files. But for large > files where not every line is processed it easily divides the number of > instances created by a factor of 2. Bad example: while ( line = gets.chomp ) # work with line end