Skip to content

Instantly share code, notes, and snippets.

View vimrc
autocmd FileType bzl AutoFormatBuffer buildifier
syntax on
let mapleader = ","
set wildmode=list:longest
set list
set listchars=tab:>-,trail:-,extends:>,precedes:<,nbsp:+
set sts=2
set sw=2
set bs=2
View gist:b2a20c22de71d35b67d3ef3373729695
0.7% 0.7% 8645 google::protobuf::TextFormat::Parser::ParserImpl::ConsumeField(google::protobuf::Message*)
0.6% 1.2% 7131 google::protobuf::io::Printer::Print(char const*, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&)
0.5% 1.8% 6346 google::protobuf::DescriptorBuilder::BuildMessage(google::protobuf::DescriptorProto const&, google::protobuf::Descriptor const*, google::protobuf::Descriptor*)
0.5% 2.2% 6248 google::protobuf::io::Printer::Print(char const*, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&, char const*, std::string const&)
0.5% 2.7% 5974 google::protobuf::util::converter::ProtoWriter::RenderPrimitiveField
@haberman
haberman / amalgamate.py
Last active Aug 29, 2015
For building a upb amalgamator.
View amalgamate.py
#!/usr/bin/python
import sys
import re
INCLUDE_RE = re.compile('^#include "([^"]*)"$')
def parse_include(line):
match = INCLUDE_RE.match(line)
return match.groups()[0] if match else None
@haberman
haberman / intset.rs
Last active Aug 29, 2015
Implementation of an IntSet data structure in Rust.
View intset.rs
use std::collections::TreeMap;
use std::collections::tree_map::Entries; // This took forever
use std::num::One;
use std::num::Saturating;
// Equivalent to Set<T>, but only works for Ints, and may be more efficient
// if the set contains large contiguous ranges. Each range is stored as a
// single entry instead of storing each member individually.
struct IntSet<T> {
// These correspond to ranges of high->low. The ranges are closed (inclusive)
@haberman
haberman / HistogramFail
Last active Aug 29, 2015
My failed attempt at making a nice histogram with IPython.
View HistogramFail
{
"metadata": {
"name": "HistogramFail"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
@haberman
haberman / upbwrapper.rs
Last active Jan 3, 2016
Prototype for a scheme for upb Rust wrappers for upb.
View upbwrapper.rs
// Prototype for a scheme for upb Rust wrappers for upb.
//
// Output (when linked with fakeupb.c):
// C: new()
// C: number() = 1
// Number: 1
// C: setnumber(5)
// C: number() = 5
// Number: 5
// C: freeze() = 1
View fakeupb.c
// Fake upb: a fake implementation for a small subset of the
// actual upb interface, for testing with Rust.
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct {
uint32_t refcount;
View gist:5621682
// On my system:
// virtual call time: 4.340
// non-virtual call time: 3.970
// virtual call overhead 9.32%
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#define NOINLINE __attribute__ ((noinline))
View gist:5621474
// Output on my system:
// virtual call time: 4.340
// non-virtual call time: 3.970
// virtual call overhead 9.32%
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#define NOINLINE __attribute__ ((noinline))
@haberman
haberman / jit1.c
Created Dec 12, 2012
Code for a trivial (but real) JIT. Part of an upcoming article / blog post.
View jit1.c
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
int main(int argc, char *argv[]) {
// Machine code for:
// mov eax, 0
// ret
unsigned char code[] = {0xb8, 0x00, 0x00, 0x00, 0x00, 0xc3};