URL:
  <http://gna.org/patch/?5668>

                 Summary: Node to store its priority queue index
                 Project: Freeciv
            Submitted by: cazfi
            Submitted on: Sun 04 Jan 2015 07:29:30 PM EET
                Category: general
                Priority: 5 - Normal
                  Status: Ready For Test
                 Privacy: Public
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
         Planned Release: 

    _______________________________________________________

Details:

pf_normal_map_iterate() accounts over 20% of the server CPU time, so any
optimization to it counts, and can be even higher priority than cleanest
possible APIs. There's also other related path finding functions in the list
of top CPU hogs.

When it finds faster route to the given node, it calls priority queue
_replace() to set new cost for it. _replace() needs to find the node being
replaced, and as the nodes in the hash are not ordered, it has to iterate
though them all to find the correct one.

Attached patch changes that by keeping the node's index in the priority queue
in the node itself so there's no need to search it.

This is not very clean solution as it exposes index that should be internal
detail of the priority queue to the path finding code. I'll test this to see
if it gives any noticeable performance gain.
Earlier I considered replacing use of generic priority queue with (mostly
duplicate) implementation internal to, and specifically crafted and optimised
for, path finding.



    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Sun 04 Jan 2015 07:29:30 PM EET  Name: PqIndexCache.patch  Size: 10kB  
By: cazfi

<http://gna.org/patch/download.php?file_id=23398>

    _______________________________________________________

Reply to this item at:

  <http://gna.org/patch/?5668>

_______________________________________________
  Message sent via/by Gna!
  http://gna.org/


_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to