{"id":14977825,"url":"https://github.com/hansalemaos/cythonfastsort","last_synced_at":"2026-02-04T11:35:44.461Z","repository":{"id":210099343,"uuid":"725748644","full_name":"hansalemaos/cythonfastsort","owner":"hansalemaos","description":"C++ parallel sorting algorithms through Cython - up to 8 times faster than NumPy","archived":false,"fork":false,"pushed_at":"2023-11-30T19:45:40.000Z","size":23,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-23T08:28:03.892Z","etag":null,"topics":["c","cpp","cython","numpy","parallel-computing","parallel-programming","python","sorting"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/cythonfastsort","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hansalemaos.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-11-30T19:45:21.000Z","updated_at":"2023-12-19T11:06:05.000Z","dependencies_parsed_at":"2023-12-18T21:44:00.661Z","dependency_job_id":null,"html_url":"https://github.com/hansalemaos/cythonfastsort","commit_stats":{"total_commits":2,"total_committers":1,"mean_commits":2.0,"dds":0.0,"last_synced_commit":"c2bd4cf2195cfff1f3a693d0bef3b9059ae49d4e"},"previous_names":["hansalemaos/cythonfastsort"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hansalemaos/cythonfastsort","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hansalemaos%2Fcythonfastsort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hansalemaos%2Fcythonfastsort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hansalemaos%2Fcythonfastsort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hansalemaos%2Fcythonfastsort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hansalemaos","download_url":"https://codeload.github.com/hansalemaos/cythonfastsort/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hansalemaos%2Fcythonfastsort/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29082891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T03:31:03.593Z","status":"ssl_error","status_checked_at":"2026-02-04T03:29:50.742Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","cpp","cython","numpy","parallel-computing","parallel-programming","python","sorting"],"created_at":"2024-09-24T13:56:23.810Z","updated_at":"2026-02-04T11:35:44.446Z","avatar_url":"https://github.com/hansalemaos.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C++ parallel sorting algorithms through Cython - up to 8 times faster than NumPy \r\n\r\n## pip install cythonfastsort\r\n\r\n### Tested against Windows / Python 3.11 / Anaconda\r\n\r\n## Cython (and a C/C++ compiler) must be installed to use the optimized Cython implementation.\r\n\r\n\r\n```python\r\n\r\nimport sys\r\nimport timeit\r\nimport numpy as np\r\nfrom cythonfastsort import generate_random_arrays, sort_all\r\n\r\n\r\nsize = 10000000\r\narras = [\r\n    (size, \"float32\", -555555555, 555555555),\r\n    (size, \"float64\", -100000000000, 100000000000),\r\n    (size, np.uint8, 0, 255),\r\n    (size, np.int8, -120, 120),\r\n    (size, np.int16, -30000, 30000),\r\n    (size, np.int32, -555555555, 555555555),\r\n    (size, np.int64, -(sys.maxsize-1)//2, (sys.maxsize-1)//2),\r\n    (size, np.uint16, 0, 60000),\r\n    (size, np.uint32, 0, 555555555),\r\n    (size, np.uint64, 0, sys.maxsize-1),\r\n]\r\n\r\nreps = 3\r\nfor a in arras:\r\n    arr = generate_random_arrays(*a)\r\n    seq = generate_random_arrays(size // 10, *a[1:])\r\n    s = \"\"\"u=sort_all(arr)\"\"\"\r\n    u = sort_all(arr)\r\n    t1 = timeit.timeit(s, globals=globals(), number=reps) / reps\r\n    print('c++ ', t1)\r\n    s2 = \"\"\"q=np.sort(arr)\"\"\"\r\n    q = np.sort(arr)\r\n    t2 = timeit.timeit(s2, globals=globals(), number=reps) / reps\r\n    print('np ', t2)\r\n    print(np.all(q == u))\r\n\r\n    print(\"-----------------\")\r\n\r\nhaystack = np.array(\r\n    [\r\n        b\"Cumings\",\r\n        b\"Heikkinen\",\r\n        b\"Cumings, Mrs. John Bradley (Florence Briggs Thayer)\",\r\n        b\"aaa\",\r\n        b\"bbbb()\",\r\n        b\"Futrelle\",\r\n        b\"Allen\",\r\n        b\"Cumings, Mrs. John Bradley (Florence Briggs Thayer)q\",\r\n        b\"Braund, Mr. Owen Harris\",\r\n        b\"Heikkinen, Miss. Laina\",\r\n        b\"Futrelle, Mrs. Jacques Heath (Lily May Peel)\",\r\n        b\"Allen, Mr. William Henry\",\r\n        b\"Braund\",\r\n    ],\r\n    dtype=\"S\",\r\n)\r\n\r\narr = np.ascontiguousarray(np.concatenate([haystack for _ in range(200000)]))\r\nreps = 5\r\ns = \"\"\"u=sort_all(arr)\"\"\"\r\nu = sort_all(arr)\r\nt1 = timeit.timeit(s, globals=globals(), number=reps) / reps\r\ns = \"\"\"u=np.sort(arr)\"\"\"\r\nq = np.sort(arr)\r\nt2 = timeit.timeit(s, globals=globals(), number=reps) / reps\r\nprint('c++ ', t1)\r\nprint('np ', t2)\r\nprint(np.all(q == u))\r\n\r\n# c++  0.2110750000004676\r\n# np  0.6982908999998472\r\n# True\r\n# -----------------\r\n# c++  0.22871500000110245\r\n# np  0.7115663999999621\r\n# True\r\n# -----------------\r\n# c++  0.0869510999994721\r\n# np  0.27525126666781335\r\n# True\r\n# -----------------\r\n# c++  0.09770773333366378\r\n# np  0.28797130000020843\r\n# True\r\n# -----------------\r\n# c++  0.13066273333364128\r\n# np  0.47454773333326256\r\n# True\r\n# -----------------\r\n# c++  0.17967379999997016\r\n# np  0.6125306666666196\r\n# True\r\n# -----------------\r\n# c++  0.19168066666679806\r\n# np  0.6346349666673632\r\n# True\r\n# -----------------\r\n# c++  0.06744649999988421\r\n# np  0.47243033333264367\r\n# True\r\n# -----------------\r\n# c++  0.09263499999966977\r\n# np  0.6186357666665572\r\n# True\r\n# -----------------\r\n# c++  0.11886440000065097\r\n# np  0.6260395666661983\r\n# True\r\n# -----------------\r\n# c++  0.9570277200000419\r\n# np  1.4337052399998356\r\n# True\r\n\r\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhansalemaos%2Fcythonfastsort","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhansalemaos%2Fcythonfastsort","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhansalemaos%2Fcythonfastsort/lists"}