#strict #prompt Const MemSize = 1024 * 1024 * 32 Declare Function MyMul Lib "mymul.dll" Alias "_MyMul@16" (a As QWord, b As QWord) As QWord Declare Function timeGetTime Lib "winmm.dll" () As DWord Declare Function timeBeginPeriod Lib "winmm" (ByVal uPeriod As DWord) As Long Declare Function timeEndPeriod Lib "winmm" (ByVal uPeriod As DWord) As Long Dim i As Long, j As Long Dim p[3] As *QWord For i = 0 To 3 p[i] = VirtualAlloc(0, MemSize, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE) Next Dim randNext As DWord randNext = timeGetTime() For i = 0 To 1 For j = 0 To ELM(MemSize / SizeOf (DWord)) randNext = randNext * 1103515245 + 12345 SetDWord(p[i] + j * SizeOf (DWord), randNext) Next Next Dim start As DWord, time1 As DWord, time2 As DWord Input "Ready?", start '単なる入力待ち timeBeginPeriod(1) start = timeGetTime() For i = 0 To ELM(MemSize / SizeOf (QWord)) p[2][i] = p[0][i] * p[1][i] Next time1 = timeGetTime() - start start = timeGetTime() For i = 0 To ELM(MemSize / SizeOf (QWord)) p[3][i] = MyMul(p[0][i], p[1][i]) Next time2 = timeGetTime() - start timeEndPeriod(1) 'Open "H:\Result.txt" For Output As #1 Print time1, time2 /* For i = 0 To ELM(MemSize / SizeOf (QWord)) Print #1, p[0][i], p[1][i], p[2][i], p[3][i] Next */ For i = 0 To 3 VirtualFree(p[i], 0, MEM_DECOMMIT Or MEM_RELEASE) Next Input start End