Skip to content

Instantly share code, notes, and snippets.

View gnprice's full-sized avatar

Greg Price gnprice

View GitHub Profile
@gnprice
gnprice / sigprof.patch
Created November 19, 2012 04:11
Patch to make MRI/Ruby safe for -pg
From 98fc9cd0b28921dc02ee4c366c96e4caeb7d8475 Mon Sep 17 00:00:00 2001
From: Greg Price <price@mit.edu>
Date: Wed, 31 Oct 2012 15:53:59 -0700
Subject: [PATCH] Suppress SIGPROF
We don't handle it well -- the exact reason is unclear, but threading
seems to trigger it -- so just squelch it.
Building with -pg is necessary for getting call-graph information with
e.g. the Linux 'perf' profiler. But -pg also causes the libc startup
# Times are PyPy / CPython.
# Python 2.7.0 (e837df3968a1, Mar 15 2011, 03:00:18)
# [PyPy 1.5.0-alpha0 with GCC 4.4.3] on linux2
# Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)
# [GCC 4.4.5] on linux2
# The CPython is 64-bit, the PyPy 32-bit, which I hope is not
# confounding anything. Both running on the same machine.
# Times measured with
# $ $PYTHON -m timeit -n10000 -r3 -s 'import bench_fnclass as b, gc; gc.enable()' "b.$func()"
$ python -m timeit -v -s 'import bench_fnclass as b' 'b.as_fn()'
10 loops -> 0.000801 secs
100 loops -> 0.00851 secs
1000 loops -> 0.113 secs
10000 loops -> 7.75 secs
raw times: 7.2 7.22 7.24
10000 loops, best of 3: 720 usec per loop
$ python -V
Python 2.6.6