So maybe something like:
My results, IDE run, fairly slow PC by current standards:Code:Option Explicit Private Const ITEM_COUNT As Long = 1000 Private Const CB_ADDSTRING As Long = &H143& Private Const CB_INSERTSTRING As Long = &H14A& Private Const CB_INITSTORAGE As Long = &H161& Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long Private Declare Function GetTickCount Lib "kernel32" () As Long Private Declare Function QueryPerformanceFrequency Lib "kernel32" ( _ ByRef Frequency As Currency) As Long Private Declare Function QueryPerformanceCounter Lib "kernel32" ( _ ByRef PerformanceCount As Currency) As Long Private mFrequency As Currency Private Function GetTicks() As Double 'Returns a time in seconds. Dim PerformanceCount As Currency If mFrequency < 0 Then 'Not supported, substitute: GetTicks = CDbl(GetTickCount()) / 1000 Else QueryPerformanceCounter PerformanceCount GetTicks = CDbl(PerformanceCount) / mFrequency End If End Function Private Sub TicksInit() If mFrequency = 0 Then If QueryPerformanceFrequency(mFrequency) = 0 Then mFrequency = -1 End Sub Private Sub Form_Load() Dim Items() As String Dim I As Long Dim SpaceReqd As Long Dim Secs As Double 'Make up some text to squirt into Combo1's item list. 'We store preconverted ANSI here to save time: ReDim Items(ITEM_COUNT - 1) For I = 0 To ITEM_COUNT - 1 Items(I) = StrConv(Format$(I, "0000 ") _ & MonthName(I Mod 12 + 1) & " " _ & CStr(Rnd() * 10000&), _ vbFromUnicode) SpaceReqd = SpaceReqd + LenB(Items(I)) + 1 Next TicksInit Secs = GetTicks() SendMessage Combo1.hWnd, CB_INITSTORAGE, ITEM_COUNT, SpaceReqd For I = 0 To ITEM_COUNT - 1 SendMessage Combo1.hWnd, CB_INSERTSTRING, I, StrPtr(Items(I)) 'Or if Combo1.Sorted = True then use: 'SendMessage Combo1.hWnd, CB_ADDSTRING, 0, StrPtr(Items(I)) Next Secs = GetTicks() - Secs MsgBox "Items: " & Format$(ITEM_COUNT, "#,##0") _ & vbNewLine & vbNewLine _ & "Total: " & Format$(Secs, "#,##0.000000") _ & vbNewLine & vbNewLine _ & "Per item: " & Format$(Secs / ITEM_COUNT, "#,##0.000000") End Sub
Code:--------------------------- Project1 --------------------------- Items: 1,000 Total: 0.084233 Per item: 0.000084 --------------------------- OK ---------------------------




Reply With Quote
