6 private links
one file unit testing
When optimizing memory access, and memory cache misses in particular, there are surprisingly few tools to help you. valgrind’s cachegrind tool is the closest one I’ve found. It gives you a lot of information on cache misses, but not necessarily in the form you need it.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.
This page is a collection of obscure C++ features, gathered over the years as I've explored different corners of the language. C++ is very big and I'm always learning more about it. Hopefully you'll learn something from this page even if you already know C++ pretty well. The features below are roughly ordered from least to most obscure.
Programming for multiple threads is not fundamentally different from writing an event-oriented GUI application or even a straight up sequential application. The important lessons of encapsulation, separation of concerns, loose coupling, etc. all apply. But developers get into trouble with multiple threads when they don’t apply those lessons; instead they try to apply the mostly-irrelevant bits of information they learned about threads and synchronization primitives from introductory multithreading texts.
Writing programs in good old C can be quite refreshing if you use some modern utility library like GLib. It offers a comprehensive set of tools you expect from a modern programming environment like collections, logging, plugin support, thread abstractions, string and date utilities, different parsers, i18n and a lot more. One essential part, especially for agile teams, is onboard too: the unit test framework gtest.
That article mentioned runtime performance as the main reason for employing CRTP instead of the more traditional runtime polymorphism (dispatch via virtual functions). While some rationale for the cost of virtual calls was given, I didn’t go too deep into it.
gcov is a test coverage program. Use it in concert with GCC to analyze your programs to help create more efficient, faster running code and to discover untested parts of your program. You can use gcov as a profiling tool to help discover where your optimization efforts will best affect your code. You can also use gcov along with the other profiling tool, gprof, to assess which parts of your code use the greatest amount of computing time.
A static checker for identifying unstable code. http://css.csail.mit.edu/stack
lockfree, waitfree, obstructionfree synchronization algorithms and data structures, scalability-oriented architecture, multicore/multiprocessor design
ClanLib is a cross platform toolkit library with a primary focus on game creation. The library is Open Source and free for commercial use, under the ClanLib License.
Feature Highlights
Very liberal zlib style license
Supports Windows, Linux and partially Mac OS X
OpenGL, Direct3D and Software Rendering
High-performant shader based render architecture
Full GUI framework customizable using CSS 2.1
GUI windows rendered to textures or native windows
High level 2D graphics with fonts, sprites, animations, collisions
Network library with sockets, web and game interfaces
Game IDE graphic interface
Physics for both 2D and 3D
Scene Manager for 3D
OpenCL support
Database supporting SQLite
Sound supporting wav, tracker formats and ogg-vorbis
Basic cross platform runtime (threading, file I/O, XML/DOM, etc.)
Template based signal library (type-safe callbacks)
Integrated resource management
one liner Raytracer :O
Performance efficient string concatenation
An how to about neural network with example code
Also great tutorial on c++
Buffer overflow to change class type ,changing its vptr