Skip to content

โ“ Is Python set is slower than JS Set? โ€ 240909

Dusuna ๋‘์„ ์•„ edited this page Sep 10, 2024 · 3 revisions

Yes

in many cases, Python's set can be slower than JavaScript's Set, and this comes down to how each language's engine handles memory, optimization, and data structures.

The differences aren't just due to the specific code but are more about how Python and JavaScript are fundamentally designed and optimized. For small datasets, the difference may be negligible, but for larger ones, JavaScript might outperform Python in certain set-based operations due to engine-level optimizations.

400ms vs 70ms

image

var containsDuplicate = function(nums) {
    return new Set(nums).size !== nums.length
};

image

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        return len(nums) != len(set(nums))

See the example problem at leetcode: https://leetcode.com/problems/contains-duplicate/

What is GIL?

Python, Global Interpreter Lock

The Global Interpreter Lock (GIL) is a mechanism used in CPython, the standard implementation of Python, to ensure that only one thread executes Python bytecode at a time. This can be somewhat counterintuitive for people working with multithreading, as Python's threading library allows you to create multiple threads, but the GIL can limit the true concurrency when CPU-bound tasks are involved.

the GIL simplifies Python's memory management but can be a bottleneck for CPU-bound multithreaded applications. For true parallelism on multi-core processors, developers often resort to multiprocessing or other Python implementations.

Clone this wiki locally