Skip to content

Instantly share code, notes, and snippets.

View martinus's full-sized avatar
😎
warp! Help, I'm trapped in a time

Martin Leitner-Ankerl martinus

😎
warp! Help, I'm trapped in a time
View GitHub Profile
#include <cstddef>
#include <cstdint> // UINTPTR_MAX
#include <cstring> // memcpy
#include <memory> // allocator
#include <type_traits>
#include <utility>
#if _MSC_VER
# include <intrin.h> // required for CLZ builtin
#endif
// g++ -std=c++17 -O2 advent2016_day19.cpp -o advent2016_day19
#include <iostream>
#include <vector>
// Each elf points to the next in a circular linked list. We don't need to store an index number,
// because that is implicitly given by the location in the std::vector container where they all
// reside.
struct Elf {
Elf* next{};
@martinus
martinus / bulk_pool.h
Last active February 11, 2021 14:43
Bulk pool allocator
// Copyright (c) 2019 Martin Ankerl
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#pragma once
#include <cstddef>
#include <new>
#include <type_traits>
class UpToExecutor {
public:
UpToExecutor(int64_t begin, int64_t end, int64_t step)
: mBegin(begin)
, mEnd(end)
, mStep(step) {}
template <typename Op>
void operator()(Op op) {
#pragma once
#include <bitset>
#include <type_traits>
namespace util {
// Provides a type-safe bitset for enums
template <typename E>
class EnumFlags {

Warning, results might be unstable:

  • NDEBUG not defined, assert() macros are evaluated
  • CPU governor is '' but should be 'performance'

Recommendations

ns/op op/s err% ins/op cyc/op IPC total benchmark
@martinus
martinus / .tmux.conf
Created September 25, 2019 11:09
Linux Configurations
# Automatically set window title
set-window-option -g automatic-rename on
set-option -g set-titles on
set-option -g history-limit 10000
# Enable mouse mode (tmux 2.1 and above)
setw -g mouse on
# remap prefix from 'C-b' to 'C-Space'
unbind C-b
@martinus
martinus / perf.md
Last active October 24, 2023 15:12
perf config

/etc/sysctl.conf

kernel.perf_event_paranoid = -1
kernel.perf_cpu_time_max_percent = 5
kernel.perf_cpu_time_max_percent=10000

Build with g++4-8, the oldest supported

CC=gcc-4.8 CXX=g++-4.8 CPPFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0 ./configure --disable-wallet
@martinus
martinus / benchmark2.cpp
Created July 27, 2019 10:53
simple benchmark of robin_hood map, updated
#include <iostream>
#include <string>
#include <chrono>
#include <unordered_map>
#include "tsl/robin_map.h"
#include "robin_hood.h"
using my_clock = std::chrono::high_resolution_clock;