A Journey Into Non-Virtual PolymorphismRud Merriam | A Journey into Non-Virtual Polymorphism 2 Who Doesn’t Recognize This?? 1990 Borland Turbo C++Cppcon 2023 | Rud Merriam | A Journey into Non-Virtual Polymorphism 3 Background ● Experience – Medium.com (https://medium.com/@rudmerriam)Cppcon 2023 | Rud Merriam | A Journey into Non-Virtual Polymorphism 4 Polymorphism ● Greek: “many forms” (Obligatory statement) ● The use of a single variableCppcon 2023 | Rud Merriam | A Journey into Non-Virtual Polymorphism 5 Polymorphic Variables ● Base class pointer to derived class – Virtual functions are not bad! ● Standard Template Library0 码力 | 43 页 | 536.84 KB | 6 月前3
Back to Basics: The Abstract MachineBack to Basics: The Abstract Machine Bob Steagall CppCon 2020 K E W B C O M P U T I N GCopyright © 2020 Bob Steagall K E W B C O M P U T I N G Overview/Goals • Describe abstract machines in general general • Describe the C++ abstract machine specifically • Language goals that drive its design • Role in program development and execution • Important definitions and characteristics • Important components components of the abstract machine, and their relationships • Provide a useful overview of the C++ abstract machine CppCon 2020 - The Abstract Machine 2Copyright © 2020 Bob Steagall K E W B C O M P U T I0 码力 | 91 页 | 538.90 KB | 6 月前3
Optimizing Away Virtual Functions May Be PointlesscarePhoto by Tech Nick on unsplashSimple benchmark class Base { public: int concrete() const; virtual int virt() const; }; void benchmark(Base *b, size_t num_iterations) { auto start = Clock::now(); virt_duration = end-start;There are interesting technical details and surprising conclusions that virtual functions can be actually faster. Since CPU architectures are mentioned, I'd expect to see deep nt-vs-inheritance-vs-other- ways-performanceDoes it even matter?Conclusions ● The notion that “virtual functions are slower” is flat out wrong. ○ Which is not to say they are faster ○ Some of the suggested0 码力 | 20 页 | 1.19 MB | 6 月前3
BehaviorTree.CPP: Task Planning for Robots and Virtual Agentsto appreciate the power of Decorators, and the complexity of implementing the same in a State Machine! More examples: ● ForceFailure / ForceSuccess ● Repeat ● Timeout ● RunOnceExample: if-then-else name, const NodeConfig& config) : SyncActionNode(name, config) {} // You must override this virtual function NodeStatus tick() override { std::cout << "Type: [ApproachEnemy]. Instance:" <<0 码力 | 59 页 | 7.97 MB | 6 月前3
Leveraging the Power of C++ for Efficient Machine Learning on Embedded DevicesLeveraging the power of C++ for efficient machine learning on embedded devices Adrian Stanciu adrian.stanciu.pub@gmail.com CppCon, 2023 1 / 50About me ◮ I am a software engineer from Romania ◮ I have Motivation ◮ Image classification ◮ Hand gesture recognition ◮ Summary ◮ Q&A 4 / 50Motivation 5 / 50Machine Learning (ML) ◮ Subfield of Artificial Inteligence (AI) ◮ Enables computers to learn from data and consumption ◮ May have real-time performance constraints 7 / 50Machine learning on embedded devices ◮ Alternative to cloud-based machine learning ◮ Advantages: ◮ Real-time processing ◮ Low latency ◮0 码力 | 51 页 | 1.78 MB | 6 月前3
micrograd++: A 500 line C++ Machine Learning Librarymicrograd++: A 500 line C++ Machine Learning Library Gautam Sharma Independent Researcher gautamsharma2813@gmail.com Abstract—micrograd++ is a pure C++ machine learning li- brary inspired by Andrej Karpathy’s framework for building and training machine learning models. By leveraging the performance efficiency of C++, micro- grad++ offers a robust solution for integrating machine learning capabilities directly into Traditionally, all machine learning libraries are extremely bulky and very hard to integrate as third party dependencies. This aspect scares practitioners to adopt a C++ based machine learning library for0 码力 | 3 页 | 1.73 MB | 6 月前3
Just-in-Time Compilation - J F Bastien - CppCon 2020compile code to a target machine, then run it. X mapping never changes.? Interpreter Is an interpreter a JiT, or AoT? What if it modifies its bytecode? A CPU executes machine code… an interpreter executes executes bytecode… That’s the same thing, a CPU is an interpreter for machine code. A compiler can perform partial evaluation of a program, thereby interpreting it… The compiler itself can be compiled programs are typically smaller, if only because the representation chosen is at a higher level than machine code, and can carry much more semantic information implicitly. Here, think of examples where a0 码力 | 111 页 | 3.98 MB | 6 月前3
Back To Basics Functionsand as member functions in classes. Within our discussion of functions in classes, we'll touch on virtual functions, static functions, and operator overloading. We'll circle back to where we began on these Function Call What happens in the machine when we call a function? 36Function Calls - From the Machine Viewpoint (1/5) 37 I think it’s useful to know what happens in the machine when we call a function So function as shown below.Function Calls - From the Machine Viewpoint (2/5) 38 ● Simple program focusing on an ‘add’ function.Function Calls - From the Machine Viewpoint (2/ 39 ● When we call a function in0 码力 | 123 页 | 7.26 MB | 6 月前3
Conan 1.25 Documentationvariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 10.5 Virtual Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . edition of JFrog Artifactory for Conan packages, including a WebUI, multiple auth protocols (LDAP), Virtual and Remote repositories to create advanced topologies, a Rest API and generic repositories to host (recommended) To install Conan using pip, you need Python >= 3.5 distribution installed on your machine. Python 3.4 support has been dropped and Python 2 is being deprecated. Modern Python distros come0 码力 | 655 页 | 5.45 MB | 1 年前3
Conan 1.26 Documentationvariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 10.5 Virtual Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . edition of JFrog Artifactory for Conan packages, including a WebUI, multiple auth protocols (LDAP), Virtual and Remote repositories to create advanced topologies, a Rest API and generic repositories to host (recommended) To install Conan using pip, you need Python >= 3.5 distribution installed on your machine. Python 3.4 support has been dropped and Python 2 is being deprecated. Modern Python distros come0 码力 | 669 页 | 5.51 MB | 1 年前3
共 212 条
- 1
- 2
- 3
- 4
- 5
- 6
- 22













