Initial commit
This commit is contained in:
commit
4fb70d1992
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
out
|
||||
|
1043
BachelorsThesis.mdk
Executable file
1043
BachelorsThesis.mdk
Executable file
File diff suppressed because it is too large
Load Diff
119
d.json
Executable file
119
d.json
Executable file
@ -0,0 +1,119 @@
|
||||
{
|
||||
"displayName": "D",
|
||||
"name": "d",
|
||||
"mimeTypes": ["text/d"],
|
||||
"fileExtensions": ["d","di"],
|
||||
|
||||
"lineComment": "//",
|
||||
"blockCommentStart": "/*",
|
||||
"blockCommentEnd": "*/",
|
||||
|
||||
"keywords": [
|
||||
"alignas", "alignof", "and", "and_eq", "asm", "auto", "bitand", "bitor", "bool", "break", "case",
|
||||
"catch", "char", "wchar", "dchar", "class", "shared", "const", "immutable", "cast",
|
||||
"continue", "default", "do", "double", "else", "foreach",
|
||||
"enum", "export", "extern", "false", "float", "for", "goto", "if", "pragma",
|
||||
"int", "long", "import", "module", "new", "nothrow", "not", "null", "private", "protected", "public", "register", "reinterpret_cast",
|
||||
"return", "short", "static", "assert", "struct",
|
||||
"switch", "template", "this", "__gshared", "true", "try", "alias", "typeof", "union", "virtual", "void", "volatile", "while", "final", "uint", "ulong", "ushort", "ubyte", "byte", "cent", "is", "string", "dstring", "wstring"
|
||||
],
|
||||
|
||||
"extraKeywords": [],
|
||||
|
||||
"typeKeywords": [
|
||||
"bool", "double", "cent", "byte", "int", "short", "char", "void", "long", "float", "ulong", "ushort", "uint", "ubyte", "byte", "wchar", "dchar", "string", "dstring", "wstring"
|
||||
],
|
||||
|
||||
"extraTypeKeywords": [],
|
||||
|
||||
"directives": [
|
||||
"include","if","endif","ifdef","define","line","warning","error"
|
||||
],
|
||||
|
||||
"operators": [
|
||||
"=", ">", "<", "!", "~", "?", ":",
|
||||
"==", "<=", ">=", "!=", "&&", "||", "++", "--",
|
||||
"+", "-", "*", "/", "&", "|", "^", "%", "<<",
|
||||
">>", ">>>", "+=", "-=", "*=", "/=", "&=", "|=",
|
||||
"^=", "%=", "<<=", ">>=", ">>>="
|
||||
],
|
||||
|
||||
"extraOperators": [],
|
||||
|
||||
"symbols": "[=><!~?:&|+\\-*\\/\\^%]+",
|
||||
"escapes": "\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
|
||||
|
||||
|
||||
"tokenizer": {
|
||||
"root": [
|
||||
|
||||
["__\\w+", "identifier.predefined"],
|
||||
["\\w+::(?=\\w)", "namespace" ],
|
||||
["(namespace)(\\s*)((?:\\w+::)*\\w+)", ["keyword","white","namespace"] ],
|
||||
|
||||
["[a-z_$][\\w]*", { "cases": {
|
||||
"@typeKeywords": "keyword.type",
|
||||
"@extraTypeKeywords": "keyword.type.extra",
|
||||
"@keywords": "keyword",
|
||||
"@extraKeywords": "keyword.extra",
|
||||
"@default": "identifier" } }],
|
||||
["(\\.|\\->)([A-Z][\\w]*)", ["keyword", "identifier"] ],
|
||||
["[A-Z][\\w]*(?!\\s*[\\w\\(])", "type.identifier" ],
|
||||
["[A-Z][A-Z0-9_]*(?![\\w\\(])", "type.identifier" ],
|
||||
|
||||
|
||||
["^(\\s*#)(\\w+)(.*)", { "cases": {
|
||||
"$2@directives": ["namespace","namespace","string"],
|
||||
"@default": ["meta","meta","string"]
|
||||
}}],
|
||||
|
||||
{ "include": "@whitespace" },
|
||||
|
||||
["[{}()\\[\\]]", "@brackets"],
|
||||
["[<>](?!@symbols)", "@brackets"],
|
||||
["@symbols", { "cases": {
|
||||
"@operators": "operator",
|
||||
"@extraOperators": "operator.extra",
|
||||
"@default" : "" } } ],
|
||||
|
||||
["\\d*\\.\\d+([eE][\\-+]?\\d+)?[fFdD]?", "number.float"],
|
||||
["0[xX][0-9a-fA-F_]*[0-9a-fA-F][Ll]?", "number.hex"],
|
||||
["0[0-7_]*[0-7][Ll]?", "number.octal"],
|
||||
["0[bB][0-1_]*[0-1][Ll]?", "number.binary"],
|
||||
["\\d+[lL]?", "number"],
|
||||
|
||||
|
||||
["[;,.]", "delimiter"],
|
||||
|
||||
|
||||
["[lL]\"([^\"\\\\]|\\\\.)*$", "string.invalid" ],
|
||||
["\"", "string", "@string" ],
|
||||
|
||||
|
||||
["'[^\\\\']'", "string"],
|
||||
["(')(@escapes)(')", ["string","string.escape","string"]],
|
||||
["'", "string.invalid"]
|
||||
],
|
||||
|
||||
"whitespace": [
|
||||
["[ \\t\\r\\n]+", "white"],
|
||||
["\\/\\*", "comment", "@comment" ],
|
||||
["\\/\\/.*$", "comment"]
|
||||
],
|
||||
|
||||
"comment": [
|
||||
["[^\\/*]+", "comment" ],
|
||||
|
||||
["\\/\\*", "comment.invalid" ],
|
||||
["\\*/", "comment", "@pop" ],
|
||||
["[\\/*]", "comment" ]
|
||||
],
|
||||
|
||||
"string": [
|
||||
["[^\\\\\"]+", "string"],
|
||||
["@escapes", "string.escape"],
|
||||
["\\\\.", "string.escape.invalid"],
|
||||
["\"", "string", "@pop" ]
|
||||
]
|
||||
}
|
||||
}
|
770
example.bib
Executable file
770
example.bib
Executable file
@ -0,0 +1,770 @@
|
||||
@misc{zigdoc_2021,
|
||||
url={https://ziglang.org/documentation/0.7.0/},
|
||||
title = {Documentation - The Zig Programming Language},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{cmpxchg_2021,
|
||||
url={https://c9x.me/x86/html/file_module_x86_id_41.html},
|
||||
title = {CMPXCHG: Compare and Exchange (x86 Instruction Set Reference)},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{lock_free_2019,
|
||||
url={https://www.internalpointers.com/post/lock-free-multithreading-atomic-operations},
|
||||
title = {Lock-Free Multithreading with Atomic Operations},
|
||||
year={2019}
|
||||
},
|
||||
|
||||
@misc{sutter_2007,
|
||||
url={https://www.youtube.com/watch?v=L7zSU9HI-6I},
|
||||
title = {Machine Architecture: Things Your Programming Language Never Told You},
|
||||
organization={Youtube},
|
||||
year={2007}
|
||||
},
|
||||
|
||||
@article{alglave_2009,
|
||||
title={The Semantics of Power and ARM Multiprocessor Machine Code},
|
||||
url={https://dl.acm.org/doi/proceedings/10.1145/1481839},
|
||||
DOI={10.1145/1481839},
|
||||
journal={DAMP '09: Proceedings of the 4th Workshop on Declarative Aspects of Multicore Programming},
|
||||
author={Alglave, Jade and Fox, Anthony and Ishtiaq, Samin and O. Myreen, Magnus and Sarkar, Susmit and Sewell, Peter and Zappa Nardelli, Francesco},
|
||||
year={2009},
|
||||
pages={13-24}
|
||||
},
|
||||
|
||||
@misc{bell_2021,
|
||||
title={Operating Systems: Threads},
|
||||
url={https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/4_Threads.html},
|
||||
author={Bell, J.},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{drepper_2007,
|
||||
title={Memory part 2: CPU caches [LWN.net]},
|
||||
url={https://lwn.net/Articles/252125/},
|
||||
author={Drepper, Ulrich},
|
||||
year={2007}
|
||||
},
|
||||
|
||||
@book{fabian_2018,
|
||||
title={Data-Oriented Design},
|
||||
author={Fabian, Richard},
|
||||
year={2018},
|
||||
pages={5-7,261-262}
|
||||
},
|
||||
|
||||
@misc{fog_2021,
|
||||
title={Calling Conventions},
|
||||
url={https://www.agner.org/optimize/calling_conventions.pdf},
|
||||
author={Fog, Agner},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{jenkov_2021,
|
||||
title={Concurrency vs. Parallelism},
|
||||
url={http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html},
|
||||
author={Jenkov, Jakob},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{naik_2013,
|
||||
title={Coding for Performance: Data alignment and structures},
|
||||
url={https://software.intel.com/content/www/us/en/develop/articles/coding-for-performance-data-alignment-and-structures.html},
|
||||
author={Naik, Sumedh},
|
||||
year={2013}
|
||||
},
|
||||
|
||||
@misc{prabhu_2021,
|
||||
title={Pipeline Hazards},
|
||||
url={https://web.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/hazards.html},
|
||||
author={Prabhu, Gurpur}
|
||||
},
|
||||
|
||||
@book{randell_2013,
|
||||
place={Berlin, Heidelberg},
|
||||
title={The Origins of Digital Computers},
|
||||
publisher={Springer Berlin / Heidelberg},
|
||||
author={Randell, Brian},
|
||||
year={2013},
|
||||
pages={399 - 413}
|
||||
},
|
||||
|
||||
@misc{torres_2007,
|
||||
title={How The Cache Memory Works | Hardware Secrets},
|
||||
url={https://hardwaresecrets.com/how-the-cache-memory-works/},
|
||||
author={Torres, Gabriel},
|
||||
year={2007}
|
||||
},
|
||||
|
||||
@misc{williams_2021,
|
||||
title={Memory Ordering for Atomic Operations in C++0x - C++ tutorial - developer Fusion},
|
||||
url={https://www.developerfusion.com/article/138018/memory-ordering-for-atomic-operations-in-c0x/},
|
||||
author={Williams, Anthony},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{stdatomic_2020,
|
||||
title={std::atomic - cppreference.com},
|
||||
url={https://en.cppreference.com/w/cpp/atomic/atomic},
|
||||
year={2020}
|
||||
},
|
||||
|
||||
@misc{shanthi_2021,
|
||||
title={Memory Hierarchy Design - Basics - Computer Architecture},
|
||||
url={http://www.cs.umd.edu/~meesh/411/CA-online/chapter/memory-hierarchy-design-basics/index.html},
|
||||
author={Shanthi, A. P.},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{mirek_2017,
|
||||
title={Escape Analysis - DZone Java},
|
||||
url={https://dzone.com/articles/escape-analysis},
|
||||
author={Mirek, Grzegorz},
|
||||
year={2017}
|
||||
},
|
||||
|
||||
@misc{shinsel_2021,
|
||||
title={Understanding the Instruction Pipeline},
|
||||
url={https://techdecoded.intel.io/resources/understanding-the-instruction-pipeline/},
|
||||
author={Shinsel, Alex},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@article{cheng_2013,
|
||||
title={Design Example of Useful Memory Latency for Developing a Hazard Preventive Pipeline High-Performance Embedded-Microprocessor},
|
||||
volume={2013},
|
||||
url={https://www.hindawi.com/journals/vlsi/2013/425105/},
|
||||
DOI={10.1155/2013/425105},
|
||||
journal={VLSI Design},
|
||||
author={Cheng, Ching-Hwa},
|
||||
year={2013},
|
||||
pages={1-10}
|
||||
},
|
||||
|
||||
@misc{sutter_2005,
|
||||
title={The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software},
|
||||
url={http://www.gotw.ca/publications/concurrency-ddj.htm},
|
||||
author={Sutter, Herb},
|
||||
year={2005}
|
||||
},
|
||||
|
||||
@misc{sutter2_2007,
|
||||
title={The Pillars of Concurrency},
|
||||
url={https://www.drdobbs.com/parallel/the-pillars-of-concurrency/200001985},
|
||||
author={Sutter, Herb},
|
||||
year={2007}
|
||||
},
|
||||
|
||||
@article{sutter_larus_2005,
|
||||
title={Software and the Concurrency Revolution},
|
||||
volume={3},
|
||||
url={https://dl.acm.org/doi/10.1145/1095408.1095421},
|
||||
DOI={10.1145/1095408.1095421},
|
||||
number={7},
|
||||
journal={Queue},
|
||||
author={Sutter, Herb and Larus, James},
|
||||
year={2005},
|
||||
pages={54-62}
|
||||
},
|
||||
|
||||
@misc{clement_2021,
|
||||
title={Video Game Industry - Statistics & Facts},
|
||||
url={https://www.statista.com/topics/868/video-games/#dossierSummary},
|
||||
author={Clement, J.},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{kahle_day_hofstee_johns_shippy_2005,
|
||||
title={IBM JRD 49-4/5 | Introduction to the Cell multiprocessor},
|
||||
url={https://web.archive.org/web/20070228043339/http://researchweb.watson.ibm.com/journal/rd/494/kahle.html},
|
||||
journal={Web.archive.org},
|
||||
author={Kahle, J. A. and Day, M. N. and Hofstee, H. P. and Johns, C. R. and Shippy, D.},
|
||||
year={2005}
|
||||
},
|
||||
|
||||
@misc{maragos_2005,
|
||||
title={IBM, Sony, Toshiba Reveal Cell Processor Details},
|
||||
url={https://www.gamasutra.com/view/news/95883/IBM_Sony_Toshiba_Reveal_Cell_Processor_Details.php},
|
||||
author={Maragos, Nick},
|
||||
year={2005}
|
||||
},
|
||||
|
||||
@misc{gaudin_2008,
|
||||
title={IBM's Roadrunner Smashes 4-Minute Mile of Supercomputing},
|
||||
url={https://web.archive.org/web/20081224001155/http://www.computerworld.com/action/article.do?command=viewArticleBasic&taxonomyName=hardware&articleId=9095318&taxonomyId=12&intsrc=kc_top},
|
||||
author={Gaudin, Sharon},
|
||||
year={2008}
|
||||
},
|
||||
|
||||
@misc{krishnalal_2017,
|
||||
title={The Untapped Potential of the PS3’s CELL Processor And How Naughty Dog Tamed The Beast},
|
||||
url={https://gamingbolt.com/the-untapped-potential-of-the-ps3s-cell-processor-and-how-naughty-dog-tamed-the-beast},
|
||||
author={Krishna Lal, Arjun},
|
||||
year={2017}
|
||||
},
|
||||
|
||||
@misc{turley_2021,
|
||||
title={A Glimpse Inside The Cell Processor},
|
||||
url={https://www.gamasutra.com/view/feature/131168/a_glimpse_inside_the_cell_processor.php?print=1},
|
||||
author={Turley, Jim},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{hyperthreading_2021,
|
||||
title={What Is Hyper-Threading? - Intel},
|
||||
url={https://www.intel.co.uk/content/www/uk/en/gaming/resources/hyper-threading.html},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{alimemon_amin_2009,
|
||||
title={Architectural Underpinnings of the Cell Broadband Engine},
|
||||
author={Ali Memon, Nabeel and Amin, Imran},
|
||||
year={2009}
|
||||
},
|
||||
|
||||
@misc{amdnuma_2018,
|
||||
title={AMD Optimizes EPYC Memory with NUMA},
|
||||
url={https://www.amd.com/system/files/2018-03/AMD-Optimizes-EPYC-Memory-With-NUMA.pdf},
|
||||
year={2018}
|
||||
},
|
||||
|
||||
@misc{amddlm_2018,
|
||||
title={Previewing Dynamic Local Mode for the AMD Ryzen Threadripper WX Series Processors},
|
||||
url={https://community.amd.com/t5/blogs/previewing-dynamic-local-mode-for-the-amd-ryzen-threadripper-wx/ba-p/416216},
|
||||
year={2018}
|
||||
},
|
||||
|
||||
@misc{amddlm2_2018,
|
||||
title={AMD Introduces Dynamic Local Mode for Threadripper: up to 47% Performance Gain},
|
||||
url={https://www.techpowerup.com/248308/amd-introduces-dynamic-local-mode-for-threadripper-up-to-47-performance-gain},
|
||||
year={2018}
|
||||
},
|
||||
|
||||
@misc{memperf_2015,
|
||||
title={Time Between the Lines: How Memory Access Affects Performance},
|
||||
url={https://bitbashing.io/memory-performance.html},
|
||||
year={2015}
|
||||
},
|
||||
|
||||
@misc{schoene_hackenberg_molka_2012,
|
||||
title={Memory Performance at Reduced CPU Clock Speeds: An Analysis of Current x86_64 Processors},
|
||||
author={Schoeone, Robert and Hackenberg, Daniel and Molka, Daniel},
|
||||
url={https://www.usenix.org/system/files/conference/hotpower12/hotpower12-final5.pdf},
|
||||
year={2012}
|
||||
},
|
||||
|
||||
@misc{terman_2018,
|
||||
title={L14: The Memory Hierarchy},
|
||||
author={Terman, Chris},
|
||||
url={https://computationstructures.org/lectures/caches/caches.html},
|
||||
year={2018}
|
||||
},
|
||||
|
||||
@article{amdahl_1967,
|
||||
title={Validity of the single processor approach to achieving large scale computing capabilities},
|
||||
url={https://dl.acm.org/doi/pdf/10.1145/1465482.1465560},
|
||||
DOI={10.1145/1465482.1465560},
|
||||
journal={Proceedings of the April 18-20, 1967, spring joint computer conference on - AFIPS '67 (Spring)},
|
||||
author={Amdahl, Gene M.},
|
||||
year={1967}
|
||||
},
|
||||
|
||||
@article{ashcroft_1975,
|
||||
title={Proving assertions about parallel programs},
|
||||
volume={10},
|
||||
DOI={10.1016/s0022-0000(75)80018-3},
|
||||
number={1},
|
||||
journal={Journal of Computer and System Sciences},
|
||||
author={Ashcroft, E.A.},
|
||||
year={1975},
|
||||
pages={110-135}
|
||||
},
|
||||
|
||||
@book{greenlaw_hoover_ruzzo_1995,
|
||||
place={New York},
|
||||
title={Limits to parallel computation},
|
||||
publisher={Oxford University Press, Inc.},
|
||||
author={Greenlaw, Raymond and Hoover, H. James and Ruzzo, Walter L},
|
||||
year={1995}
|
||||
},
|
||||
|
||||
@article{welch_1984,
|
||||
title={A Technique for High-Performance Data Compression},
|
||||
volume={17},
|
||||
url={https://ieeexplore.ieee.org/document/1659158},
|
||||
DOI={10.1109/mc.1984.1659158},
|
||||
number={6},
|
||||
journal={Computer},
|
||||
author={Welch, Terry},
|
||||
year={1984},
|
||||
pages={8-19}
|
||||
},
|
||||
|
||||
@article{ziv_lempel_1977,
|
||||
title={A universal algorithm for sequential data compression},
|
||||
volume={23},
|
||||
url={https://ieeexplore.ieee.org/document/1055714},
|
||||
DOI={10.1109/tit.1977.1055714},
|
||||
number={3},
|
||||
journal={IEEE Transactions on Information Theory},
|
||||
author={Ziv, J. and Lempel, A.},
|
||||
year={1977},
|
||||
pages={337-343}
|
||||
},
|
||||
|
||||
@article{ziv_lempel_1978,
|
||||
title={Compression of individual sequences via variable-rate coding},
|
||||
volume={24},
|
||||
url={https://ieeexplore.ieee.org/document/1055934},
|
||||
DOI={10.1109/tit.1978.1055934},
|
||||
number={5},
|
||||
journal={IEEE Transactions on Information Theory},
|
||||
author={Ziv, J. and Lempel, A.},
|
||||
year={1978},
|
||||
pages={530-536}
|
||||
},
|
||||
|
||||
@article{pm_chezian_2014,
|
||||
title={Behavioral Study of Data Structures on Lempel Ziv Welch (LZW) Data Compression Algorithm and ITS Computational Complexity},
|
||||
url={https://ieeexplore.ieee.org/document/6965054},
|
||||
DOI={10.1109/ICICA.2014.64},
|
||||
journal={IEEE Transactions on Information Theory},
|
||||
author={PM., Nishad and Chezian, R. Manika},
|
||||
year={2014},
|
||||
pages={268-274}
|
||||
},
|
||||
|
||||
@article{mishra_mishra_pani_2012,
|
||||
title={Parallel Lempel-Ziv-Welch (PLZW) Technique for Data Compression},
|
||||
url={http://ijcsit.com/docs/Volume%203/vol3Issue3/ijcsit2012030340.pdf},
|
||||
author={Mishra, Manas Kumar and Mishra, Tapas Kumar and Pani, Alok Kumar},
|
||||
year={2012},
|
||||
},
|
||||
|
||||
@book{arora_barak_2007,
|
||||
place={New York},
|
||||
title={Computational Complexity: A Modern Approach},
|
||||
publisher={Princeton University},
|
||||
author={Arora, Sanjeev and Barak, Boaz},
|
||||
year={2007}
|
||||
},
|
||||
|
||||
@book{gamma_helm_johnson_vlissides_1994,
|
||||
title={Design Patterns: Elements of Reusable Object-Oriented Software},
|
||||
publisher={Addison Wesley},
|
||||
author={Gamma, Erich and Helm, Richard and Johnson, Ralph and Vlissides, John},
|
||||
year={1994}
|
||||
},
|
||||
|
||||
@misc{glconcepts_2017,
|
||||
title={OpenGL Concepts},
|
||||
url={https://www.khronos.org/opengl/wiki/Portal:OpenGL_Concepts},
|
||||
year={2017}
|
||||
},
|
||||
|
||||
@misc{fog2_2021,
|
||||
title={Optimizing Software in C++: An Optimization Guide for Windows, Linux, and Mac Platforms},
|
||||
url={https://www.agner.org/optimize/optimizing_cpp.pdf},
|
||||
author={Fog, Agner},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{clark_2013,
|
||||
title={Sony's New PlayStation 4 and Open Source FreeBSD: The TRUTH},
|
||||
url={https://www.theregister.com/2013/11/16/sony_playstation_4_kernel/},
|
||||
year={2013}
|
||||
},
|
||||
|
||||
@book{mitchell_samuel_oldham_2001,
|
||||
title={Advanced Linux Programming},
|
||||
publisher={Sams Publishing},
|
||||
author={Mitchell, Mark and Samuel, Alex and Oldham, Jeffrey},
|
||||
year={2001}
|
||||
},
|
||||
|
||||
@misc{pthreadswin32_2003,
|
||||
title={Why Pthreads Are Better Than Win32 Threads},
|
||||
url={https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Why-Pthreads-are-better-than-Win32-threads/td-p/990131},
|
||||
year={2003}
|
||||
},
|
||||
|
||||
@misc{win32criticalsections_2018,
|
||||
title={Critical Section Objects},
|
||||
url={https://docs.microsoft.com/en-us/windows/win32/sync/critical-section-objects},
|
||||
year={2018}
|
||||
},
|
||||
|
||||
@misc{binstock_2011,
|
||||
title={Choosing Between Synchronization Primitives},
|
||||
url={https://software.intel.com/content/www/us/en/develop/articles/choosing-between-synchronization-primitives.html},
|
||||
author={Binstock, Andrew},
|
||||
year={2011}
|
||||
},
|
||||
|
||||
@misc{stdthread_2021,
|
||||
title={std::thread - cppreference.com},
|
||||
url={https://en.cppreference.com/w/cpp/thread/thread},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{sdlthread_2021,
|
||||
title={SDL_CreateThread - SDL Wiki},
|
||||
url={https://wiki.libsdl.org/SDL_CreateThread},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{ousterhout_1995,
|
||||
title={Why Threads are a Bad Idea (For Most Purposes)},
|
||||
url={https://web.stanford.edu/~ouster/cgi-bin/papers/threads.pdf},
|
||||
author={Ousterhout, John},
|
||||
year={1995}
|
||||
},
|
||||
|
||||
@misc{abstractionlayers_2021,
|
||||
title={Layers of Abstraction},
|
||||
url={https://slikts.github.io/concurrency-glossary/?id=layers-of-abstraction},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@article{batty_memarian_nienhuis_pichon-pharabod_sewell_2015,
|
||||
title={The Problem of Programming Language Concurrency Semantics},
|
||||
url={https://link.springer.com/chapter/10.1007/978-3-662-46669-8_12},
|
||||
DOI={10.1007/978-3-662-46669-8_12},
|
||||
journal={Programming Languages and Systems},
|
||||
author={Batty, Mark and Memarian, Kayvan and Nienhuis, Kyndylan and Pichon-Pharabod, Jean and Sewell, Peter},
|
||||
year={2015},
|
||||
pages={283-307}
|
||||
},
|
||||
|
||||
@misc{pugh_2021,
|
||||
title={The "Double-Checked Locking is Broken" Declaration},
|
||||
url={http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html},
|
||||
author={Pugh, Wiliam},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{aggarwal_2018,
|
||||
title={The Hidden Synchronized Keyword with a Static Block},
|
||||
url={https://dzone.com/articles/the-hidden-synchronized-keyword-with-a-static-bloc},
|
||||
author={Aggarwal, Priya},
|
||||
year={2018}
|
||||
},
|
||||
|
||||
@misc{goetz_2001,
|
||||
title={Double-Checked Locking: Clever, But Broken},
|
||||
url={https://www.infoworld.com/article/2074979/double-checked-locking--clever--but-broken.html},
|
||||
author={Goetz, Brian},
|
||||
year={2001}
|
||||
},
|
||||
|
||||
@misc{jenkov_2020,
|
||||
title={Java Volatile Keyword},
|
||||
url={http://tutorials.jenkov.com/java-concurrency/volatile.html},
|
||||
author={Jenkov, Jakob},
|
||||
year={2020}
|
||||
},
|
||||
|
||||
@misc{javaatomic_2021,
|
||||
title={Atomic Access},
|
||||
url={https://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{javaloom_2021,
|
||||
title={Project Loom on OpenJDK Wiki},
|
||||
url={https://wiki.openjdk.java.net/display/loom/Main},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{smith_2021,
|
||||
title={JEP 401: Primitive Objects (Preview)},
|
||||
url={https://openjdk.java.net/jeps/401},
|
||||
author={Smith, Dan},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{cimadamore_2021,
|
||||
title={JEP 393: Foreign Memory Access API (Third Incubator)},
|
||||
url={https://openjdk.java.net/jeps/393},
|
||||
author={Cimadamore, Maurizio},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@article{li_hudak_1989,
|
||||
title={Memory coherence in shared virtual memory systems},
|
||||
volume={7},
|
||||
url={https://dl.acm.org/doi/abs/10.1145/75104.75105},
|
||||
DOI={10.1145/75104.75105},
|
||||
number={4},
|
||||
journal={ACM Transactions on Computer Systems},
|
||||
author={Li, Kai and Hudak, Paul},
|
||||
year={1989},
|
||||
pages={321-359}
|
||||
},
|
||||
|
||||
@article{pugh_2000,
|
||||
title={The Java Memory Model is Fatally Flawed},
|
||||
volume={12},
|
||||
DOI={10.1002/1096-9128(200005)12:6<445::aid-cpe484>3.0.co;2-a},
|
||||
number={6},
|
||||
journal={Concurrency: Practice and Experience},
|
||||
author={Pugh, William},
|
||||
year={2000},
|
||||
pages={445-455}
|
||||
},
|
||||
|
||||
@misc{stdfuture_2020,
|
||||
title={std::future - cppreference.com},
|
||||
url={https://en.cppreference.com/w/cpp/thread/future},
|
||||
year={2020}
|
||||
},
|
||||
|
||||
@misc{bendersky_2016,
|
||||
title={The Promises and Challenges of std::async Task-Based Parallelism in C++11},
|
||||
url={https://eli.thegreenplace.net/2016/the-promises-and-challenges-of-stdasync-task-based-parallelism-in-c11/},
|
||||
author={Bendersky, Eli},
|
||||
year={2016}
|
||||
},
|
||||
|
||||
@misc{stdasync_2021,
|
||||
title={std::async - cppreference.com},
|
||||
url={https://en.cppreference.com/w/cpp/thread/async},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{asynctut_2017,
|
||||
title={C++11 Multithreading - Part 9: std::async Tutorial & Example},
|
||||
url={https://eli.thegreenplace.net/2016/the-promises-and-challenges-of-stdasync-task-based-parallelism-in-c11/},
|
||||
year={2017}
|
||||
},
|
||||
|
||||
@misc{milewski_2009,
|
||||
title={Broken Promises - C++0x Futures},
|
||||
url={https://bartoszmilewski.com/2009/03/03/broken-promises-c0x-futures/},
|
||||
author={Milewksi, Bartosz},
|
||||
year={2009}
|
||||
},
|
||||
|
||||
@misc{doverview_2021,
|
||||
title={Overview - D Programming Language},
|
||||
url={https://dlang.org/overview.html},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{dshared_2021,
|
||||
title={Migrating to Shared - D Programming Language},
|
||||
url={https://dlang.org/articles/migrate-to-shared.html},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{dsynchronization_2021,
|
||||
title={Synchronization & Sharing - D Programming Language},
|
||||
url={https://tour.dlang.org/tour/en/multithreading/synchronization-sharing},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{dattributes_2021,
|
||||
title={Attributes - D Programming Language},
|
||||
url={https://dlang.org/spec/attribute.html},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{dmutability_2021,
|
||||
title={Mutability - Dlang Tour},
|
||||
url={https://tour.dlang.org/tour/en/basics/type-qualifiers},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@article{servetto_pearce_groves_potanin_2013,
|
||||
title = {Balloon Types for Safe Parallelisation over Arbitrary Object Graphs},
|
||||
url={http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.353.2449&rep=rep1&type=pdf},
|
||||
author = {Servetto, Marco and Pearce, David and Groves, Lindsay and Potanin, Alex},
|
||||
year = {2013},
|
||||
},
|
||||
|
||||
@misc{goconcurrency_2021,
|
||||
title={A Tour of Go},
|
||||
url={https://tour.golang.org/concurrency/1},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{goroutines_2020,
|
||||
title={Receive or Fetch Return Value from a Goroutine in Go(Golang) - Welcome to Golang by Example},
|
||||
url={https://golangbyexample.com/return-value-goroutine-go/},
|
||||
year={2020}
|
||||
},
|
||||
|
||||
@misc{gochannels_2021,
|
||||
title={Go by Example: Channels},
|
||||
url={https://gobyexample.com/channels},
|
||||
author = {McGranaghan, Mark},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{greenthreads_2021,
|
||||
title={Green Threads Explained (Intro)},
|
||||
url={https://c9x.me/articles/gthreads/intro.html},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@article{togashi_klyuev_2014,
|
||||
author={Togashi, Naohiro and Klyuev, Vitaly},
|
||||
booktitle={2014 4th IEEE International Conference on Information Science and Technology},
|
||||
title={Concurrency in Go and Java: Performance analysis},
|
||||
year={2014},
|
||||
pages={213-216},
|
||||
doi={10.1109/ICIST.2014.6920368},
|
||||
ISSN={2164-4357},
|
||||
},
|
||||
|
||||
@misc{singh_2020,
|
||||
title={Load Balancing Goroutines in Go},
|
||||
url={https://itnext.io/load-balancing-goroutines-in-go-57e0896c7f86},
|
||||
author = {Singh, Adityp Pratap},
|
||||
year={2020}
|
||||
},
|
||||
|
||||
@misc{khalil_2014,
|
||||
title={Be careful When Using std::string},
|
||||
url={https://groups.google.com/a/chromium.org/g/chromium-dev/c/EUqoIz2iFU4/m/kPZ5ZK0K3gEJ},
|
||||
author = {Khalil, Georges},
|
||||
year={2014}
|
||||
},
|
||||
|
||||
@misc{stdbasicstring_2021,
|
||||
title={std::basic_string - cppreference.com},
|
||||
url={https://en.cppreference.com/w/cpp/string/basic_string},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{carruth_2016,
|
||||
url={https://www.youtube.com/watch?v=L7zSU9HI-6I},
|
||||
title = {CppCon 2016: Chandler Carruth "High Performance Code 201: Hybrid Data Structures"},
|
||||
organization={Youtube},
|
||||
year={2016}
|
||||
},
|
||||
|
||||
@book{guntheroth_2016,
|
||||
title={Optimized C++: Proven Techniques for Hightened Performance},
|
||||
publisher={O'Reilly Media},
|
||||
author={Guntheroth, Kurt},
|
||||
year={2016},
|
||||
pages={5-7,261-262}
|
||||
},
|
||||
|
||||
@misc{llvmsmallvector_2021,
|
||||
url={https://llvm.org/doxygen/classllvm_1_1SmallVector.html},
|
||||
title = {LLVM llvm::SmallVector},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{mike_2016,
|
||||
title={Exploring std::string | Shahar Mike's Web Spot},
|
||||
url={https://shaharmike.com/cpp/std-string/},
|
||||
author = {Mike, Shahar},
|
||||
year={2016}
|
||||
},
|
||||
|
||||
@misc{gccdualabi_2021,
|
||||
url={https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html},
|
||||
title = {Dual ABI}
|
||||
},
|
||||
|
||||
@misc{copyonwrite_2020,
|
||||
title={COW (Copy On Write) in GCC},
|
||||
url={https://programmer.help/blogs/cow-copy-on-write-in-gcc.html}
|
||||
},
|
||||
|
||||
@misc{meredith_boehm_crowl_dimov_2008,
|
||||
title={Concurrency Modifications to Basic String},
|
||||
url={http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html},
|
||||
author = {Meredith, Alisdair and Boehm, Hans and Crowl, Lawrence and Dimov, Peter},
|
||||
year={2008}
|
||||
},
|
||||
|
||||
@misc{sutter_1999,
|
||||
title={Optimizations That Aren't (In a Multithreaded World)},
|
||||
url={http://www.gotw.ca/publications/optimizations.htm},
|
||||
author = {Sutter, Herb},
|
||||
year={1999}
|
||||
},
|
||||
|
||||
@misc{acton_2014,
|
||||
url={https://www.youtube.com/watch?v=rX0ItVEVjHc},
|
||||
title = {CppCon 2014: Mike Acton "Data-Oriented Design and C++"},
|
||||
organization={Youtube},
|
||||
year={2016}
|
||||
},
|
||||
|
||||
@misc{steamsurvey_2021,
|
||||
url={https://store.steampowered.com/hwsurvey/},
|
||||
title = {Steam Hardware & Software Survey}
|
||||
},
|
||||
|
||||
@misc{opengldsa_2020,
|
||||
url={https://www.khronos.org/opengl/wiki/Direct_State_Access},
|
||||
title = {Direct State Access - OpenGL Wiki}
|
||||
},
|
||||
|
||||
@misc{openglspirv_2018,
|
||||
url={https://www.khronos.org/opengl/wiki/SPIR-V},
|
||||
title = {SPIR-V - OpenGL Wiki}
|
||||
},
|
||||
|
||||
@misc{openglubo_2017,
|
||||
url={https://www.khronos.org/opengl/wiki/Uniform_Buffer_Object},
|
||||
title = {Uniform Buffer Object - OpenGL Wiki}
|
||||
},
|
||||
|
||||
@misc{haynes_2020,
|
||||
title={How Do Refresh Rates Work for Monitors},
|
||||
url={https://insights.samsung.com/2020/01/16/how-do-refresh-rates-work-for-monitors/},
|
||||
author = {Haynes, Sutter},
|
||||
year={2020}
|
||||
},
|
||||
|
||||
@misc{raylib_2021,
|
||||
title={raylib},
|
||||
url={https://www.raylib.com/},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{godotscenetree_2021,
|
||||
title={SceneTree - Godot Engine (stable) Documentation in English},
|
||||
url={https://docs.godotengine.org/en/stable/getting_started/step_by_step/scene_tree.html},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{unityhirarchy_2021,
|
||||
title={Unity - Manual: The Hierarchy Window},
|
||||
url={https://docs.unity3d.com/Manual/Hierarchy.html},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{amethystbook_2021,
|
||||
title={Introduction - Amethyst Documentation},
|
||||
url={https://book.amethyst.rs/book/stable/},
|
||||
year={2021}
|
||||
},
|
||||
|
||||
@misc{raylibmultithreading_2019,
|
||||
title={Ray on Twitter},
|
||||
url={https://twitter.com/raysan5/status/1119273062405373952},
|
||||
author = {Santamaria, Ramon},
|
||||
year={2019}
|
||||
},
|
||||
|
||||
@misc{spolsky_2002,
|
||||
title={The Law of Leaky Abstraction - Joel on Software},
|
||||
url={https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/},
|
||||
author = {Spolsky, Joel},
|
||||
year={2002}
|
||||
},
|
||||
|
||||
@misc{bergstrom_2011,
|
||||
title={Measuring NUMA Effects with the STREAM Benchmark},
|
||||
url={https://newtraell.cs.uchicago.edu/files/tr_authentic/TR-2012-04.pdf},
|
||||
author = {Bergstrom, Lars},
|
||||
year={2011}
|
||||
},
|
111
go.json
Executable file
111
go.json
Executable file
@ -0,0 +1,111 @@
|
||||
{
|
||||
"displayName": "Golang",
|
||||
"name": "go",
|
||||
"mimeTypes": ["text/go"],
|
||||
"fileExtensions": ["go"],
|
||||
|
||||
"lineComment": "//",
|
||||
"blockCommentStart": "/*",
|
||||
"blockCommentEnd": "*/",
|
||||
|
||||
"keywords": [
|
||||
"func", "var", "make", "go", "for", "if", "int", "uint"
|
||||
],
|
||||
|
||||
"extraKeywords": [],
|
||||
|
||||
"typeKeywords": [
|
||||
"int", "uint"
|
||||
],
|
||||
|
||||
"extraTypeKeywords": [],
|
||||
|
||||
"directives": [],
|
||||
|
||||
"operators": [
|
||||
"=", ">", "<", "!", "~", "?", ":",
|
||||
"==", "<=", ">=", "!=", "&&", "||", "++", "--",
|
||||
"+", "-", "*", "/", "&", "|", "^", "%", "<<",
|
||||
">>", ">>>", "+=", "-=", "*=", "/=", "&=", "|=",
|
||||
"^=", "%=", "<<=", ">>=", ">>>="
|
||||
],
|
||||
|
||||
"extraOperators": [],
|
||||
|
||||
"symbols": "[=><!~?:&|+\\-*\\/\\^%]+",
|
||||
"escapes": "\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
|
||||
|
||||
|
||||
"tokenizer": {
|
||||
"root": [
|
||||
|
||||
["__\\w+", "identifier.predefined"],
|
||||
["\\w+::(?=\\w)", "namespace" ],
|
||||
["(namespace)(\\s*)((?:\\w+::)*\\w+)", ["keyword","white","namespace"] ],
|
||||
|
||||
["[a-z_$][\\w]*", { "cases": {
|
||||
"@typeKeywords": "keyword.type",
|
||||
"@extraTypeKeywords": "keyword.type.extra",
|
||||
"@keywords": "keyword",
|
||||
"@extraKeywords": "keyword.extra",
|
||||
"@default": "identifier" } }],
|
||||
["(\\.|\\->)([A-Z][\\w]*)", ["keyword", "identifier"] ],
|
||||
["[A-Z][\\w]*(?!\\s*[\\w\\(])", "type.identifier" ],
|
||||
["[A-Z][A-Z0-9_]*(?![\\w\\(])", "type.identifier" ],
|
||||
|
||||
|
||||
["^(\\s*#)(\\w+)(.*)", { "cases": {
|
||||
"$2@directives": ["namespace","namespace","string"],
|
||||
"@default": ["meta","meta","string"]
|
||||
}}],
|
||||
|
||||
{ "include": "@whitespace" },
|
||||
|
||||
["[{}()\\[\\]]", "@brackets"],
|
||||
["[<>](?!@symbols)", "@brackets"],
|
||||
["@symbols", { "cases": {
|
||||
"@operators": "operator",
|
||||
"@extraOperators": "operator.extra",
|
||||
"@default" : "" } } ],
|
||||
|
||||
["\\d*\\.\\d+([eE][\\-+]?\\d+)?[fFdD]?", "number.float"],
|
||||
["0[xX][0-9a-fA-F_]*[0-9a-fA-F][Ll]?", "number.hex"],
|
||||
["0[0-7_]*[0-7][Ll]?", "number.octal"],
|
||||
["0[bB][0-1_]*[0-1][Ll]?", "number.binary"],
|
||||
["\\d+[lL]?", "number"],
|
||||
|
||||
|
||||
["[;,.]", "delimiter"],
|
||||
|
||||
|
||||
["[lL]\"([^\"\\\\]|\\\\.)*$", "string.invalid" ],
|
||||
["\"", "string", "@string" ],
|
||||
|
||||
|
||||
["'[^\\\\']'", "string"],
|
||||
["(')(@escapes)(')", ["string","string.escape","string"]],
|
||||
["'", "string.invalid"]
|
||||
],
|
||||
|
||||
"whitespace": [
|
||||
["[ \\t\\r\\n]+", "white"],
|
||||
["\\/\\*", "comment", "@comment" ],
|
||||
["\\/\\/.*$", "comment"]
|
||||
],
|
||||
|
||||
"comment": [
|
||||
["[^\\/*]+", "comment" ],
|
||||
|
||||
["\\/\\*", "comment.invalid" ],
|
||||
["\\*/", "comment", "@pop" ],
|
||||
["[\\/*]", "comment" ]
|
||||
],
|
||||
|
||||
"string": [
|
||||
["[^\\\\\"]+", "string"],
|
||||
["@escapes", "string.escape"],
|
||||
["\\\\.", "string.escape.invalid"],
|
||||
["\"", "string", "@pop" ]
|
||||
]
|
||||
}
|
||||
}
|
4
ignores.dic
Executable file
4
ignores.dic
Executable file
@ -0,0 +1,4 @@
|
||||
codebase
|
||||
utilisation
|
||||
NUMA
|
||||
completeion
|
BIN
images/AlignmentInefficient.png
(Stored with Git LFS)
Executable file
BIN
images/AlignmentInefficient.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/AmdahlsLaw.png
(Stored with Git LFS)
Executable file
BIN
images/AmdahlsLaw.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/ArrayOfStructures.png
(Stored with Git LFS)
Executable file
BIN
images/ArrayOfStructures.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/CacheEfficient.png
(Stored with Git LFS)
Executable file
BIN
images/CacheEfficient.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/CacheInefficient.png
(Stored with Git LFS)
Executable file
BIN
images/CacheInefficient.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/CacheLevels.png
(Stored with Git LFS)
Executable file
BIN
images/CacheLevels.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/ConcurrentPipeline.png
(Stored with Git LFS)
Executable file
BIN
images/ConcurrentPipeline.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/EngineAPI.png
(Stored with Git LFS)
Executable file
BIN
images/EngineAPI.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/MemoryHierarchy.png
(Stored with Git LFS)
Executable file
BIN
images/MemoryHierarchy.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/OnaFlow.png
(Stored with Git LFS)
Executable file
BIN
images/OnaFlow.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/OnaTestFlow.png
(Stored with Git LFS)
Executable file
BIN
images/OnaTestFlow.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/SequentialPipeline.png
(Stored with Git LFS)
Executable file
BIN
images/SequentialPipeline.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/SmallBufferOptimisation.png
(Stored with Git LFS)
Executable file
BIN
images/SmallBufferOptimisation.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/StructureOfArrays.png
(Stored with Git LFS)
Executable file
BIN
images/StructureOfArrays.png
(Stored with Git LFS)
Executable file
Binary file not shown.
BIN
images/Texture.png
(Stored with Git LFS)
Executable file
BIN
images/Texture.png
(Stored with Git LFS)
Executable file
Binary file not shown.
2773
style/sigplanconf.cls
Executable file
2773
style/sigplanconf.cls
Executable file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user