Initial commit

This commit is contained in:
kayomn 2023-02-27 22:47:16 +00:00
commit 4fb70d1992
23 changed files with 4868 additions and 0 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
*.png filter=lfs diff=lfs merge=lfs -text

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
out

1043
BachelorsThesis.mdk Executable file

File diff suppressed because it is too large Load Diff

119
d.json Executable file
View 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
View 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 PS3s 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
View 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
View File

@ -0,0 +1,4 @@
codebase
utilisation
NUMA
completeion

BIN
images/AlignmentInefficient.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/AmdahlsLaw.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/ArrayOfStructures.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/CacheEfficient.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/CacheInefficient.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/CacheLevels.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/ConcurrentPipeline.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/EngineAPI.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/MemoryHierarchy.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/OnaFlow.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/OnaTestFlow.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/SequentialPipeline.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/SmallBufferOptimisation.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/StructureOfArrays.png (Stored with Git LFS) Executable file

Binary file not shown.

BIN
images/Texture.png (Stored with Git LFS) Executable file

Binary file not shown.

2773
style/sigplanconf.cls Executable file

File diff suppressed because it is too large Load Diff