CppCon 2017: John Lakos “Local ('Arena') Memory Allocators (part 1 of 2)”

Поділитися
Вставка
  • Опубліковано 26 гру 2024

КОМЕНТАРІ • 40

  • @simonfarre4907
    @simonfarre4907 3 роки тому +69

    This is probably one of the best talks ever given at CppCon.

  • @niles_5003
    @niles_5003 3 роки тому +28

    I sincerely hope this man is a professor somewhere. He's an amazing lecturer and definitely someone you want to learn a lot from. I like how he keeps people engaged, manages the room, and even made me laugh out loud all while covering some pretty technical material that's mostly new to me.

  • @abhishekk4194
    @abhishekk4194 3 місяці тому +2

    The clarity blew me away.

  • @hmpcon
    @hmpcon 7 років тому +16

    Lakos's talks are always a stream of consciousness :P

  • @TimothyJesionowski
    @TimothyJesionowski 6 років тому +14

    Excellent presentation, very educational while being somehow entertaining. As a C fanboy this is one of the few c++ features I genuinely want, though I'm sure I can kind of get it with stateful functions.

  • @azdinator
    @azdinator Рік тому

    Oh man. That guy is really good. Thank you.

  • @unevaguejaune8671
    @unevaguejaune8671 5 років тому +12

    34:25 Can someone explain me what the problem / purpose of the inline specifier is ? Or what he is trying to show ?

    • @SalokinX
      @SalokinX 5 років тому +3

      He wants to highlight the fact that the function definitions are meant to be
      Inline and that he didn't inline them (by defining the function in the class definition) just so it's easier to see on the slide.

    • @tomcheng3903
      @tomcheng3903 5 років тому +5

      The functions are inlined by default, so there's no need for the inline keyword - the compiler will error if you try to insert an extraneous 'inline', since it's not possible to have a non-inline allocator.

    • @Jimmy9Bazooka
      @Jimmy9Bazooka Рік тому +4

      @@tomcheng3903 Nope. He's lying. You can have extra 'inline' specifier on an inline class function. There will be no error.

    • @jspt256
      @jspt256 2 місяці тому

      I was also initially deeply confused by this, and none of the comments above were particularly satisfying / filled me with confidence.
      What the c++ reference pages are clear on is that explicitly adding "inline" here is *unnecessary*, because definitions for these member functions are included directly in the class definition (and are therefore already implicitly inline).
      That said, unnecessary does not mean forbidden. I couldn't find from the reference pages whether "inline" is definitely allowed to be specified explicitly or not. Having actually gone to the effort of testing on MSVC and clang, can verify it does not appear to be a "syntax error" to mark those functions inline explicitly (on those compilers).
      It is possible that it isn't technically guaranteed to be allowed in the spec, that the presenter previously worked with some compiler that complained. I don't know, I don't care.
      If you look at the class definition for Allocator, you'll see that the destructor declaration is wrong (should be ~Allocator not ~allocator), which indicates to me that this code was possibly never compiled before the presentation.

  • @АлександрДаас
    @АлександрДаас 3 роки тому +4

    Thank you, great talk

    • @CppCon
      @CppCon  3 роки тому +2

      Glad you enjoyed it!

  • @matveyshishov
    @matveyshishov Рік тому

    Pure joy! ❤

  • @IllumTheMessage
    @IllumTheMessage 7 років тому +3

    Excellent talk.

  • @bitlinus
    @bitlinus 24 дні тому

    Great talk.. somehow the guy reminds me of Tony Soprano :)

  • @PflanzenChirurg
    @PflanzenChirurg 5 років тому +4

    What a fucking GEM

  • @sampathsubasinghe929
    @sampathsubasinghe929 3 роки тому +1

    49:58 How to determine allocation density is low for billion integers when reserved memory or capacity() is not given.

    • @rastaarmando7058
      @rastaarmando7058 3 роки тому +2

      On my machine vector allocates (1.5 * sizeOfCurrentMemory) each time it runs out of space. should be similar on yours so, I guess u could use that?

    • @mytech6779
      @mytech6779 2 місяці тому

      Geometric growth with no reserve().
      2^n (GCC and Clang default libraries) or 1.5^n (MS visual studio default library) approximate number of allocations it with log₂N (or log₁.₅N) where N = 1,000,000,000. (30 and 52 allocations respectively.)

  • @LordNezghul
    @LordNezghul 7 років тому +6

    Talking "this is very important" should be at the end of part 2 not because "you said so/I am here" but because people already saw this is important.

  • @xr.spedtech
    @xr.spedtech Рік тому +1

    This guy is cool

  • @yb9737
    @yb9737 Рік тому

    GREAT TALK

  • @robbydomino
    @robbydomino 7 років тому

    great talk

  • @rocknroooollllll
    @rocknroooollllll 7 років тому +22

    Death by powerpoint, John. Every. Single. Time. You have great talent, but massive information overload.

  • @mrlithium69
    @mrlithium69 7 років тому +5

    @56:00 How has he not heard #pragma pack(push, 1).
    You put it around a specific struct, and disable it after w/ #pragma pack(pop)

    • @dyslexicunt
      @dyslexicunt 7 років тому +1

      Yeah it's always reassuring when someone deemed fit to give a presentation on custom allocators, is completely ignorant of a basic compiler feature dealing with memory alignment. Way to go.

    • @ciaran2679
      @ciaran2679 7 років тому +50

      I'd imagine it's because this is a talk about standard C++, not compiler-specific extensions.

    • @eggdish
      @eggdish 7 років тому +4

      I understand not knowing about a non standard pragma and personally I don't like the pragma anyway.
      However, the speaker is clearly misinformed about unaligned data hurting performance, or is programming in non-x86 environment. Google "lemire unaligned x86" for nice blog post with benchmarks. (Might not apply to floating point)

    • @Bozemoto
      @Bozemoto 6 років тому

      Useful for stuff like loading binary file headers like BMP and WAV though.

    • @andreyblack2558
      @andreyblack2558 6 років тому

      you just a stupid fool if your think what hi has newer heard about it, its a trick

  • @marinrusu9179
    @marinrusu9179 6 років тому

    23:37

  • @andik70
    @andik70 Рік тому

    "we meaning me" :-)

  • @MsDuketown
    @MsDuketown 10 місяців тому

    arena.h needs a forum.h
    Otherwize, floating atomics will extinguish humanity.