Skip to content

Instantly share code, notes, and snippets.

View timfel's full-sized avatar

Tim Felgentreff timfel

View GitHub Profile
TABLE-OF-CONTENTS on ~/papers/phdthesis/Felgentreff_2015_Babelsberg.tex
SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels [f]ollow [x]r [?]Help
------------------------------------------------------------------------------
Part I Solving Constraints on Object Behavior
1 Introduction
1.1 Challenges
* Constraint Solvers are Non-deterministic ``Magic''
* Object-oriented Imperative Programming is the Norm
* Solvers Are Highly Specialized
* Practical Performance Requires Trade-Offs
SplayTree;benchmarks.without.log;1;0.7674418604651163
SplayTree;benchmarks.with.log;0.20116279069767443;0.012015503875968992
SplayTree;benchmarks.cog.log;0.020387596899224807;0.0020930232558139536
Compiler;benchmarks.without.log;1;0.09012464046021093
Compiler;benchmarks.with.log;0.4995206136145734;0.01725790987535954
Compiler;benchmarks.cog.log;0.016145733461169702;0.00014381591562799616
Json;benchmarks.without.log;1;0.310580204778157
Json;benchmarks.with.log;0.3993174061433447;0.10921501706484642
Json;benchmarks.cog.log;0.049931740614334474;0.0034129692832764505
ArrayAccess;benchmarks.without.log;1;0.0410958904109589
SplayTree;1;0.7674418604651163;0.20116279069767443;0.012015503875968992;0.020387596899224807;0.0020930232558139536
Compiler;1;0.09012464046021093;0.4995206136145734;0.01725790987535954;0.016145733461169702;0.00014381591562799616
Json;1;0.310580204778157;0.3993174061433447;0.10921501706484642;0.049931740614334474;0.0034129692832764505
ArrayAccess;1;0.0410958904109589;0.5110502283105023;0.007123287671232876;0.23726027397260274;0.001917808219178082
ClassVarBinding;1;0.04855275443510738;0.49654528478057897;0.005243252448501502;0.07142857142857144;0.0011204481792717088
FloatLoop;1;0.019064124783362217;0.4832755632582322;0.0026863084922010396;0.15008665511265165;0.0012998266897746966
InstVarAccess;1;0.21551724137931036;0.5629310344827586;0.04741379310344828;0.06469827586206896;0.0006810344827586207
IntLoop;1;0.04924242424242423;0.5075757575757576;0.005743805375949732;0.07282196969696969;0.0011363636363636363
Send;1;0.05577689243027889;0.5345617529880479;0.005377116873062125;0.08197211155378487;0.0007470119521912352
reset
fontsize = 12
set term pdf
set style fill solid 1.00 border 0
set style histogram errorbars gap 2 lw 1
set style data histogram
set xtics rotate by -45
set grid ytics
set xlabel "Benchmarks"
set ylabel "Relative execution time vs. reference implementation"
require "mechanize"
url = "http://www.crossref.org/guestquery/"
bibfile = ARGV[0]
outfile = File.open(ARGV[1], 'w') || STDOUT
puts "Searching for #{bibfile}, writing to #{outfile}"
agent = Mechanize.new
page = agent.get url
@timfel
timfel / hyperv-xterm.ps1
Created November 17, 2015 09:17
Switch to fastest connected interface to pipe Hyper-V network, trigger DHCP in VM, start Xming, connect via ssh, start xterm
function Ping-IPRange {
<#
.EXAMPLE
Ping-IPRange -StartAddress 192.168.1.1 -EndAddress 192.168.1.254 -Interval 20
.LINK
http://gallery.technet.microsoft.com/Fast-asynchronous-ping-IP-d0a5cf0e
#>
[CmdletBinding(ConfirmImpact='Low')]
Param(
[parameter(Mandatory = $true, Position = 0)]
[[MCMcmUpdater updateFromServer]
on: ProvideAnswerNotification
do: [:n | n resume: true]]
on: Warning
do: [:n | n resume: true].
[(Installer squeak
project: 'VMMaker')
install: 'VMMaker.oscog'] on: Warning do: [:n | n resume: true].
(Installer swasource
project: 'BenchmarkRunner')
"These to:do: loops are not message sends, and are compiled
into comparisons and jump bytecodes. The inner loop is jitted,
the outer isn't, but we get a bridge that executes from the end of the inner loop
over the jump to the beginning of the inner loop"
i := 0.
1 to: 2000 do: [:a |
1 to: 1000 do: [:b |
i := i + b abs.
]
].
@timfel
timfel / truffle-material.md
Created April 15, 2019 12:49 — forked from smarr/truffle-material.md
Truffle: Languages and Material
@timfel
timfel / Context.java
Last active May 5, 2023 12:08
Supercharge Your Java Apps With Python Blogpost
Context context = Context.newBuilder("python").
allowAllAccess(true).
option("python.ForceImportSite", "true").
option("python.Executable", VENV_EXECUTABLE).
build();