2009/2/23 Robert Klemme <shortcutter / googlemail.com>:
> 2009/2/23 Iñaki Baz Castillo <ibc / aliax.net>:
>> Hi, I've a module with two methods (thanks Jeff):
>> - hex_unescape(string)
>> - hex_scape(string)
>> as follows:
>>
>>  def self::hex_unescape(str)
>>    str.gsub(/%([0-9a-fA-F]{2})/) { $1.to_i(16).chr }
>>  end
>>
>>  def self::hex_escape(str)
>>    str.gsub(/[^a-zA-Z0-9_\-.]/n) { sprintf("%%%02X", $&.unpack("C")[0]) }
>>  end
>>
>> "hex_escape" method is copied from CGI lib, and sincerelly I don't like too
>> much its approach using "sprintf". Is there other way more ellegant?
>> (performance is the mos important requeriment anyway).
>
> Then I am sure you _measured_ it and came to the conclusion that it is
> too slow, did you?  What are your results and what are your
> performance requirements?

I did a Benchmark.realtime comparing hex_unescape and hex_escape
methods. hex_unescape takes ~2.5*10^(-5) while hex_escape takes
~4*10^(-5).

Anyway I've realized right now that "sprintf" is directly implemented
as C code so it can't be faster.

Thanks.

-- 
Iñaki Baz Castillo
<ibc / aliax.net>