- Parallel Computing Course - Stanford CS149, Fall 2023
- Performance-Aware Programming Series by Casey Muratori
- Algorithms for Modern Hardware
- Computer Systems: A Programmer's Perspective, 3/E - by Randal E. Bryant and David R. O'Hallaron, Carnegie Mellon University
- Performance Engineering Of Software Systems - am MITOCW course
- Parallel Programming 2020 by NHR@FAU
- Cpu Caches and Why You Care - by Scott Meyers
// defer.h | |
// [email protected] | |
// © 2025 Crash Override, Inc. | |
// Licensed under the BSD 3-Clause license | |
#pragma once | |
#include <stdint.h> | |
typedef struct n00b_defer_ll_t n00b_defer_ll_t; |
default: | |
gcc -O0 -g3 -Wall -Wextra -Wconversion -Wdouble-promotion \ | |
-Wno-unused-parameter -Wno-unused-function -Wno-sign-conversion \ | |
main.c | |
format: | |
clang-format -i main.c |
UpgradableRWMutex is an enhanced version of the standard sync.RWMutex. It has the all methods sync.RWMutex with exact same semantics. It gives more methods to give upgradable-read feature.
The new semantics for upgradable-read are as follows:
- Multiple goroutines can get read-lock together with a single upgradable-read-lock.
- Only one goroutine can have a write-lock and no read-lock/upgradable-read-lock can be acquired in this state.
-
Cache-Oblivious Algorithms and Data Structures - Erik Demaine (One of the earliest papers in cache oblivious data structures and algorithms that introduces the cache oblivious model in detail and examines static and dynamic cache oblivious data structures built between 2000-2003)
-
Cache Oblivious B-Trees - Bender, Demaine, Farch-Colton (This paper presents two dynamic search trees attaining near-optimal performance on any hierarchical memory. One of the fundamental papers in the field where both search trees discussed match the optimal search bound of Θ(1+log (B+1)N) memory transfers)
-
Cache Oblivious Search Trees via Binary Trees of Small Height - Brodal, Fagerberg, Jacob (The data structure discussed in this paper works on the version of [2] but avoids the use o
# Set the working directory globally | |
ARG SOURCEDIR="app" | |
# Pin the Python version to use | |
# See the following article to learn more about choosing the right base image | |
# https://pythonspeed.com/articles/base-image-python-docker-images | |
ARG PYTHONVERSION="3.11-slim-bookworm" | |
# Createh the base image for generating the requirements file | |
FROM python:${PYTHONVERSION} AS builder |
# From https://github.com/tiangolo/fastapi/issues/258 | |
from typing import List | |
from fastapi import FastAPI | |
from starlette.responses import HTMLResponse | |
from starlette.websockets import WebSocket, WebSocketDisconnect | |
app = FastAPI() |