File: keysort.py

package info (click to toggle)
pytables 3.11.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 15,272 kB
  • sloc: ansic: 82,216; python: 65,569; cpp: 753; sh: 394; makefile: 106
file content (45 lines) | stat: -rw-r--r-- 886 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from time import perf_counter as clock

import numpy as np

import tables as tb

N = 1000 * 1000
rnd = np.random.randint(N, size=N)

for dtype1 in (
    "S6",
    "b1",
    "i1",
    "i2",
    "i4",
    "i8",
    "u1",
    "u2",
    "u4",
    "u8",
    "f4",
    "f8",
):
    for dtype2 in ("u4", "i8"):
        print("dtype array1, array2-->", dtype1, dtype2)
        a = np.array(rnd, dtype1)
        b = np.arange(N, dtype=dtype2)
        c = a.copy()

        t1 = clock()
        d = c.argsort()
        # c.sort()
        # e=c
        e = c[d]
        f = b[d]
        tref = clock() - t1
        print(f"normal sort time--> {tref}")

        t1 = clock()
        tb.indexesextension.keysort(a, b)
        tks = clock() - t1
        print(f"keysort time--> {tks}     {tref / tks:.2f}x")
        assert np.all(a == e)
        # assert np.all(b == d)
        assert np.all(f == d)