You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -142,6 +143,7 @@ Contributions are welcome. To contribute, please:
142
143
143
144
-[Debugging and Profiling](#debugging-and-profiling)
144
145
146
+
-[profiling](#profiling)
145
147
-[debug symbols](#debug-symbols)
146
148
-[Debugger](#debugger)
147
149
-[Tracer](#tracer)
@@ -217,6 +219,7 @@ Contributions are welcome. To contribute, please:
217
219
218
220
-[Node](#node)
219
221
-[V8](#v8)
222
+
-[Node addon](#node-addon)
220
223
-[event loop](#event-loop)
221
224
-[libuv](#libuv)
222
225
-[I/O](#io)
@@ -274,7 +277,7 @@ Learn more [at the mason homepage](https://github.com/mapbox/mason).
274
277
275
278
### node-pre-gyp
276
279
277
-
node-pre-gyp is a package manager for node addons written in C++. It is able to install [precompiled loadable modules](#loadable-modules) (aka `.node` files) from binaries.
280
+
node-pre-gyp is a package manager for [node addons](https://github.com/mapbox/cpp/blob/master/node-cpp.md) written in C++. It is able to install [precompiled loadable modules](#loadable-modules) (aka `.node` files) from binaries.
278
281
279
282
Learn more [at the node-pre-gyp homepage](https://github.com/mapbox/node-pre-gyp).
280
283
@@ -723,6 +726,10 @@ Compilers are rapidly adding more and more optimizations and shifting around whi
723
726
-[a listing](http://llvm.org/docs/Passes.html) of all the internal compiler optimizations in clang++ which you don't need to know specifically, but which are under-the-hood of the "O" levels.
724
727
-[a detailed summary](http://stackoverflow.com/a/15548189) of which internal optimizations are grouped in which "O" level across clang++ releases.
725
728
729
+
### concurrency
730
+
731
+
Concurrency is the process of executing different pieces of the same process to allow for parallel execution of these pieces [[wikipedia](https://en.wikipedia.org/wiki/Concurrency_(computer_science))]. See [more info here](https://github.com/mapbox/cpp/blob/master/node-cpp.md#why-create-a-node-addon).
732
+
726
733
## Build modes
727
734
728
735
### DNDEBUG
@@ -823,7 +830,7 @@ The solution to this problem then is to build your [release builds](#release-bui
823
830
824
831
### problem of profiling and compiler optimization levels
825
832
826
-
Profiling is a great strategy for learning why and where a program is slow. But caution must be used in interpreting the results when profiling because:
833
+
[Profiling](#profiling) is a great strategy for learning why and where a program is slow. But caution must be used in interpreting the results when profiling because:
827
834
828
835
- If you are profiling [release builds](#release-build) then your profiling output is likely not showing inline functions which may mislead you about where time is spent in the program. Profilers generally aggregate timing results in a [calltree](#calltree) composed of multiple times sampling the [callstack](#callstack). If the [callstack](#callstack) is not showing you all the functions because some have been inlined away, you may not be able to see the whole picture.
829
836
@@ -833,6 +840,12 @@ There is no perfect solution, other than only relying on profiling output to gui
833
840
834
841
## Debugging and Profiling
835
842
843
+
### Profiling
844
+
845
+
Profiling is a way to analyze or measure the performance of a program, to give you a better idea of what your program is actually doing when you run a process. Profiling can help measure things like memory usage, how often a particular function is called within a process, or how many threads are running. It is especially useful for determining how to best optimize a program.
846
+
847
+
Check out [this guide](https://github.com/springmeyer/profiling-guide) for more information on how to profile.
848
+
836
849
### debug symbols
837
850
838
851
Extra stuff the compiler encodes in a binary to help [debuggers](#debugger) inspect details about a running or crashed program and [tracers](#tracer) collect detailed information about program execution. Normally to enable debug [symbols](#symbol) you pass `-g` to a compiler. This can be done in either a [release build](#release-build) or a [debug build](#debug-build).
@@ -1427,6 +1440,10 @@ See these articles to understand more about node [performance](#performance):
1427
1440
1428
1441
V8 is a Javascript "engine", or a Javascript interpreter. It translates Javascript into more efficient machine code (native assembly code), then executes it. V8 gives developers access to functionality (networking, DOM handling, external events, HTML5 video, canvas and data storage) needed to control the web browser, and access to server-side/system functionality within Node.js. V8 is [open source and written in C++](https://github.com/v8/v8).
1429
1442
1443
+
### Node Addon
1444
+
1445
+
See [node addon docs](https://github.com/mapbox/cpp/blob/master/node-cpp.md)
1446
+
1430
1447
### event loop
1431
1448
1432
1449
TODO
@@ -1451,4 +1468,4 @@ I/O stands for "input/output".
0 commit comments