Jump to content

Recommended Posts

Posted

What is the fastest way to sort a listview? The listview can often have over 1000 items (it is a list of songs from an iTunes Library) and all the solutions I have been able to find are very slow.

HKTunes:Softpedia | GoogleCodeLyricToy:Softpedia | GoogleCodeRCTunes:Softpedia | GoogleCodeMichtaToolsProgrammer n. - An ingenious device that turns caffeine into code.
Posted (edited)

It all comes down to how fast your function for comparing 2 items is... If you can find a very fast method for that then you should be ok.

http://msdn.microsoft.com/en-us/library/bb775131(VS.85).aspx

Mat

Maybe using machine code or a dll from within autoit is the way to go. Anyone with assembly skills willing to give it a go?

Edited by P5ych0Gigabyte
HKTunes:Softpedia | GoogleCodeLyricToy:Softpedia | GoogleCodeRCTunes:Softpedia | GoogleCodeMichtaToolsProgrammer n. - An ingenious device that turns caffeine into code.
  • Moderators
Posted

P5ych0Gigabyte,

In the past, when dealing with very large numbers of LV items, I found the quickest way was manipulate them was to keep all the items in a suitably dimensioned array. Then I could sort, add, delete as required and when I needed to redisplay the LV I would completely delete the LV contents before reloading the amended array into the LV. I also found that hiding and then re-showing the LV either side of the reload worked well to reduce any flicker.

Happy to go into more detail if required. :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Posted

Melba,

there are also memory considerations, 1000+ ints is no small number. But I will agree with you that doing it in the memory should be (a lot) faster.

I know exactly where this thread is heading, because this is not the first time Psycho has asked this... Someone wrote a UDF that uses machine coding, but the download link is broken.

Mat

Posted

P5ych0Gigabyte,

In the past, when dealing with very large numbers of LV items, I found the quickest way was manipulate them was to keep all the items in a suitably dimensioned array. Then I could sort, add, delete as required and when I needed to redisplay the LV I would completely delete the LV contents before reloading the amended array into the LV. I also found that hiding and then re-showing the LV either side of the reload worked well to reduce any flicker.

Happy to go into more detail if required. :)

M23

Sounds like an interesting idea. I'm going to give that a try.

HKTunes:Softpedia | GoogleCodeLyricToy:Softpedia | GoogleCodeRCTunes:Softpedia | GoogleCodeMichtaToolsProgrammer n. - An ingenious device that turns caffeine into code.
Posted

Melba,

there are also memory considerations, 1000+ ints is no small number. But I will agree with you that doing it in the memory should be (a lot) faster.

I know exactly where this thread is heading, because this is not the first time Psycho has asked this... Someone wrote a UDF that uses machine coding, but the download link is broken.

Mat

I think the one with the broken link actually used vbscript.

HKTunes:Softpedia | GoogleCodeLyricToy:Softpedia | GoogleCodeRCTunes:Softpedia | GoogleCodeMichtaToolsProgrammer n. - An ingenious device that turns caffeine into code.
Posted (edited)

I found some C source code for the listview sort callback. What would I need to do to compile this as a dll?

http://www.daniweb.com/forums/thread10382.html#

Edited by P5ych0Gigabyte
HKTunes:Softpedia | GoogleCodeLyricToy:Softpedia | GoogleCodeRCTunes:Softpedia | GoogleCodeMichtaToolsProgrammer n. - An ingenious device that turns caffeine into code.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...