in reply to Fastest data structure compare?

If it would just be the comparison between two hashes, then any serializing-based solution isn't going to be the fastest, unless almost all your comparisons will be between hashes that are the same. Fast solutions will terminate comparing as soon as a difference has been found.

But you want more than that. Basically, you want to get a unique, reproducable, representation of your datastructure - after all, after you've found a hash that you've seen before, you want to return the same thing as before.

I'd go for Data::Dumper or YAML.

But I am curious. What kind of application are you making where the constructor is such a bottle neck you're are looking for the fastest way of serialization?

Replies are listed 'Best First'.
Re^2: Fastest data structure compare?
by swartz (Beadle) on May 20, 2009 at 20:54 UTC
    "Fast solutions will terminate comparing as soon as a difference has been found." - good point. Hard to say what the common case will be.

    If you were going to use Data::Dumper or YAML, why wouldn't you use Storable - isn't that generally the fastest serializer?

    This is for CHI (http://cpan.uwinnipeg.ca/dist/CHI). There are instances when you want to grab a cache object for a particular namespace "from the ether", and have it automatically return the same object if it was already requested. Think of DBI->connect_cached.

      "Fast solutions will terminate comparing as soon as a difference has been found." - good point. Hard to say what the common case will be.
      I'd think it's totally irrelevant in your case. Or at least, it would totally irrelevant if I were to make something similar that what you describe you are making. I wouldn't go and compare every outstanding object to see whether it may match - if speed is important, I certainly don't want to do a linear search!
      If you were going to use Data::Dumper or YAML, why wouldn't you use Storable - isn't that generally the fastest serializer?
      Because I know Data::Dumper and YAML, and I don't know Storable very well. And I like YAML. As for what is the fastest, I would only consider that if I was convinced the constructor was that much of a bottleneck that it would matter.