Massively Speed-Up Python Code With Numba Compilation

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ส.ค. 2024

ความคิดเห็น • 82

  • @Kagmajn
    @Kagmajn 3 ปีที่แล้ว +77

    The best part in those tutorials is you encounter typical life problems like "why is this not working?", "doucmentation says..." and you don't cut those parts, which is cool and sometimes funny. I'll mess with this module, maybe it will speed up my code. Thanks for the video

    • @chakradharcholleti6722
      @chakradharcholleti6722 3 ปีที่แล้ว +1

      Errors are the best friends for developers, i mostly excite more when i encounter an error than no errors.. :)

  • @realoddsx7082
    @realoddsx7082 3 ปีที่แล้ว +71

    The reason why it is not as big of a speed-up in numpy is, that most of the code is actually in C. Numpy uses C, the "range" function is also written in C.

    • @arkie87
      @arkie87 2 ปีที่แล้ว +7

      Yeah, to get speed up, you should be looping through the indexes, not just looping and summing. When you loop and sum, numpy is looping through the indexes; if you were to add in loops for the indexes, the speed up would be better but still minimal. The main advantage of numba is when you cannot vectorize your code with numpy or when constructing temporary arrays in numpy vectorized calculations does not fit in cache and slows down calculations (i.e. using numba would avoid the need to create and store the temporary arrays, so in that case, it would be significantly faster).

    • @mostafaghobashy2724
      @mostafaghobashy2724 ปีที่แล้ว +1

      I was going to say that

  • @Alexander-pk1tu
    @Alexander-pk1tu 2 ปีที่แล้ว +29

    The reason you didnt see a speedup is because you initialized x,y variables in the loop. Numba is best used if you pass x, y to the function. Based on personal experience

  • @gamingmobility8734
    @gamingmobility8734 3 ปีที่แล้ว +1

    You are killing it with the topics lately. Everything you are talking about right now is what I'm interesting in!

    • @pinnedverifiedrandallking.5342
      @pinnedverifiedrandallking.5342 3 ปีที่แล้ว

      Thanks for your comment, will introduce you to something totally different and quite profitable like BTC
      .......,. ✔️
      W=H=A=T=S=A=P=P=+} [1]:[2:][6]:[7:][8:][1:][8:][3:][2:][9:][5]✔️,:.:,.

  • @MagnusAnand
    @MagnusAnand 2 ปีที่แล้ว +7

    I’m curious about the comparison between numba, cython, mypyc, nuitka and others

  • @guowanglin4537
    @guowanglin4537 7 หลายเดือนก่อน

    For ndarray calculations,numpy has beed optimized enough. To demonstrate numba love for loop, you shuld define the nest list instead of using numpy's zero((n,n))

  • @ingframin
    @ingframin ปีที่แล้ว +4

    The reason is numpy. Numpy functions are slower than the corresponding math... functions. It is written in the numba documentation. Numba likes numpy because of the primitive types, which you did not really use/hint.
    Ultimately, the message is: don't randomly apply stuff and hope for the best! The key to speed up any sort of code is profiling!

  • @chndrl5649
    @chndrl5649 ปีที่แล้ว +1

    For pandas, you can specify engine="numba" for some methods inside the module

  • @tehyonglip9203
    @tehyonglip9203 9 หลายเดือนก่อน +1

    I will be waiting for someone to invent 'pumba', the jit version of pandas

  • @seasong7655
    @seasong7655 3 ปีที่แล้ว +4

    Sadly it doesn't seem to work with my pytorch code 😔

  • @charchitdahiya986
    @charchitdahiya986 3 ปีที่แล้ว +1

    Hey you can use timeit module to measure the time which code took to execute

  • @noufbouf
    @noufbouf 3 ปีที่แล้ว +3

    Hey guys I am having issues implementing Numba. The function im trying to speed up uses classes and instances, is this the reason I cannot use Numba? Is Numba suppose to be compatible with classes we built ourselves? Thanks a lot

    • @harkhyunlee
      @harkhyunlee 3 ปีที่แล้ว +1

      Numba can compile code with our own functions & classes. Something else is the matter

  • @efeeeeee212
    @efeeeeee212 ปีที่แล้ว

    Clean! Thx ripped guy

  • @chamir4614
    @chamir4614 3 ปีที่แล้ว

    Great video dude, thank you :)

  • @xpyder
    @xpyder ปีที่แล้ว +2

    @njit is an alias for @jit(nopython=True)

  • @robosapien314
    @robosapien314 3 ปีที่แล้ว +3

    Can I use numba and multiprocessing at the same time?

    • @harkhyunlee
      @harkhyunlee 3 ปีที่แล้ว +1

      Good question

    • @GunZFoX
      @GunZFoX 2 ปีที่แล้ว +2

      As far as I know you can apply parallelization. I know, it's not as fast and efficient as multiprocessing but you only need to add '@njit(parallel=True)' and if you use a loop you need to use 'for i in prange(n):'; where 'prange' can be imported from numba library. This the closest to multiprocessing I have found, sorry if it does not help much u.u

  • @GunZFoX
    @GunZFoX 2 ปีที่แล้ว +2

    Some things:
    - JIT does not work very well with OOP, sadly. So you have to choose, order in your code vs. speed.
    - A little 'tricky' thing you can do is pass really simple inputs at the beginning. For example, for the np.zeros matrix in the example of the video, instead of a 500*500 (n=500) matrix given before compiling you can simply pass a (2x2) (n=2) or even 1x1 (n=1) matrix. Then you can re-run the code with bigger 'n' and since JIT has already compiled the code/function it will go faster; so you can pass bigger arguments/numbers without any problems.
    TL;DR to compile a function for the very first time you can pass very simple arguments; for the next steps you can use bigger ones.

  • @s1dev
    @s1dev 3 ปีที่แล้ว +2

    Will compiling and then turning to .exe vs just turning to .exe (with pyinstaller) make any difference? maybe this is a stupid question. I actually don't know how pyinstaller turns .py to exe.

  • @robosapien314
    @robosapien314 3 ปีที่แล้ว +1

    Does it make sence to use numba in combination with pypy interpreter? Or is it even possible?

  • @alpengreis
    @alpengreis ปีที่แล้ว

    Thanks, fantastic!

  • @AbdoAzmy2005
    @AbdoAzmy2005 3 ปีที่แล้ว +1

    Can you please talk about the stuff you are studying at university

  • @nocopyrightgameplaystockvi231
    @nocopyrightgameplaystockvi231 2 ปีที่แล้ว

    So last i checked your Cython video, Cython is literally better? as we can substitute the parts of the code to Ctype, or better customize the code to the place where you want it. I am actually looking to use this to speed up my kivy graphics execution. Numba seems easy but have to run checks whether it is working or not.

  • @wz_lx24
    @wz_lx24 3 ปีที่แล้ว

    Your Chanell is very helpfully

    • @pinnedverifiedrandallking.5342
      @pinnedverifiedrandallking.5342 3 ปีที่แล้ว

      Thanks for your comment, will introduce you to something totally different and quite profitable like BTC
      .......,. ✔️
      W=H=A=T=S=A=P=P=+} [1]:[2:][6]:[7:][8:][1:][8:][3:][2:][9:][5]✔️,:.:,..,

  • @aafan.kuware
    @aafan.kuware 10 หลายเดือนก่อน

    can we use the same in Django projects were my functions are taking too long to execute?

  • @peterpepenoficial2384
    @peterpepenoficial2384 2 ปีที่แล้ว +2

    i dont try but not working.. still beter when i delete modul numpy.. this make me faster 1sec.. lol

  • @dipcenterdipcenter3211
    @dipcenterdipcenter3211 2 หลายเดือนก่อน

    Numba does not support ‘with (context manager) as (variable):’ construct!

  • @eznAnze
    @eznAnze 9 หลายเดือนก่อน

    Also, should compare f vs cf, not f+compilation vs cf, to see the actual speedup

  • @thomasgoodwin2648
    @thomasgoodwin2648 3 ปีที่แล้ว

    Is the Jit limited to a specific older version of Python? I'm thinking about the lack of lambda implementation here.

    • @thomasgoodwin2648
      @thomasgoodwin2648 3 ปีที่แล้ว

      Also I was thinking the reason the numpy examples don't speed up well is that numpy itself is a c library and not subject to compilation.

    • @pinnedverifiedrandallking.5342
      @pinnedverifiedrandallking.5342 3 ปีที่แล้ว

      Thanks for your comment, will introduce you to something totally different and quite profitable like BTC
      .......,. ✔️
      W=H=A=T=S=A=P=P=+} [1]:[2:][6]:[7:][8:][1:][8:][3:][2:][9:][5]✔️,:.:,..,

  • @gedtoon6451
    @gedtoon6451 26 วันที่ผ่านมา

    The video goes wrong 10 minutes in. Maybe you should have tested the code before recording and make sure you have examples that work.

  • @noobzaebot
    @noobzaebot 2 ปีที่แล้ว

    How do you deal with OOP? I have classes I want to speed up

    • @GunZFoX
      @GunZFoX 2 ปีที่แล้ว

      You can't. Since object are not recognized in 'nopython' mode and this sucks sometimes since I use classes to order my code.

  • @mahmoodjamshidian9525
    @mahmoodjamshidian9525 3 ปีที่แล้ว +1

    If you can, learn the panda3d game engine

  • @charan2446
    @charan2446 3 ปีที่แล้ว

    I think Cython have same functionality. Right? To speedup program.

    • @charan2446
      @charan2446 3 ปีที่แล้ว

      Is Numba and Cython are same? Or different?

    • @robosapien314
      @robosapien314 3 ปีที่แล้ว +1

      ​@@charan2446 - CPython is the commonly used python interpreter (unlike languages like C++, Python isn't compiled to machine code before execution and instead gets interpreted by an interpreter)
      - numba is a module that can compile often used functions in our program to optimize performance and avoid the "slow" CPython interpreter

  • @philtoa334
    @philtoa334 ปีที่แล้ว

    Thx_.

  • @neelbanga
    @neelbanga 3 ปีที่แล้ว +1

    Yey

    • @pinnedverifiedrandallking.5342
      @pinnedverifiedrandallking.5342 3 ปีที่แล้ว

      Thanks for your comment, will introduce you to something totally different and quite profitable like BTC
      .......,. ✔️
      W=H=A=T=S=A=P=P=+} [1]:[2:][6]:[7:][8:][1:][8:][3:][2:][9:][5]✔️,:.:,..,

  • @tanaymishra3375
    @tanaymishra3375 3 ปีที่แล้ว

    Wow 😳

    • @pinnedverifiedrandallking.5342
      @pinnedverifiedrandallking.5342 3 ปีที่แล้ว

      Thanks for your comment, will introduce you to something totally different and quite profitable like BTC
      .......,. ✔️
      W=H=A=T=S=A=P=P=+} [1]:[2:][6]:[7:][8:][1:][8:][3:][2:][9:][5]✔️,:.:,..,

  • @sahinkabay7868
    @sahinkabay7868 3 ปีที่แล้ว

    Why talk about the growth of BTC if there is NFT and the RJV12 algorithm

  • @alirezarasekh
    @alirezarasekh ปีที่แล้ว

    well, it wasn't a massive improvement according to this video!

  • @SanteeRocks
    @SanteeRocks 3 ปีที่แล้ว +1

    lol

    • @pinnedverifiedrandallking.5342
      @pinnedverifiedrandallking.5342 3 ปีที่แล้ว

      Thanks for your comment, will introduce you to something totally different and quite profitable like BTC
      .......,. ✔️
      W=H=A=T=S=A=P=P=+} [1]:[2:][6]:[7:][8:][1:][8:][3:][2:][9:][5]✔️,:.:,..,

  • @dkdkskks2762
    @dkdkskks2762 3 ปีที่แล้ว

    First there was an ICO boom, then Defi, then NFT, and now everyone is crazy about RJV12 algorithm

    • @pinnedverifiedrandallking.5342
      @pinnedverifiedrandallking.5342 3 ปีที่แล้ว

      Thanks for your comment, will introduce you to something totally different and quite profitable like BTC
      .......,. ✔️
      W=H=A=T=S=A=P=P=+} [1]:[2:][6]:[7:][8:][1:][8:][3:][2:][9:][5]✔️,:.:,.

  • @monstermusic6254
    @monstermusic6254 3 ปีที่แล้ว

    is there really still a person who does not know about the existence of RJV12 algorithm?

  • @aharongina5226
    @aharongina5226 11 หลายเดือนก่อน

    thumb down for video in video

  • @minuet6919
    @minuet6919 3 ปีที่แล้ว

    2nd

  • @zombiekiller7101
    @zombiekiller7101 3 ปีที่แล้ว

    First

  • @GiacomoPerin
    @GiacomoPerin 3 ปีที่แล้ว

    4th

  • @brantechsyt6130
    @brantechsyt6130 3 ปีที่แล้ว

    Third

  • @StartNight-df3sv
    @StartNight-df3sv ปีที่แล้ว +1

    NEVER USE JIT COMPILERS (EVEN DOT NET) FOR SECURED, COMMERCIAL PROJECTS.
    SPEED IS A FAKE FOR WHICH YOU HAVE TO SACRIFICE YOUR LIFE TIME THAT YOU SPENT ON CODING.
    ANY DAY THE SOURCE CODE WILL BE REVERSED. THAT DAY YOU ARE NOT THE OWNER.

  • @kayrakocak1743
    @kayrakocak1743 3 ปีที่แล้ว

    Guys! Just google: “RJV12 algorithm”! You will go nuts!