low-level   491

« earlier    

GopherCon 2018 - Allocator Wrestling
Presenter: Eben Freeman Liveblogger: Beyang Liu Summary A whirlwind tour of the Go memory allocator and garbage collector, with tools and…
golang  go  low-level 
20 days ago by lenciel
[1612.06668] Stream Fusion, to Completeness
Oleg Kiselyov, Aggelos Biboudis, Nick Palladinos, Yannis Smaragdakis

“Stream processing is mainstream (again): Widely-used stream libraries are now available for virtually all modern OO and functional languages, from Java to C# to Scala to OCaml to Haskell. Yet expressivity and performance are still lacking. For instance, the popular, well-optimized Java 8 streams do not support the zip operator and are still an order of magnitude slower than hand-written loops. We present the first approach that represents the full generality of stream processing and eliminates overheads, via the use of staging. It is based on an unusually rich semantic model of stream interaction. We support any combination of zipping, nesting (or flat-mapping), sub-ranging, filtering, mapping-of finite or infinite streams. Our model captures idiosyncrasies that a programmer uses in optimizing stream pipelines, such as rate differences and the choice of a "for" vs. "while" loops. Our approach delivers hand-written-like code, but automatically. It explicitly avoids the reliance on black-box optimizers and sufficiently-smart compilers, offering highest, guaranteed and portable performance. Our approach relies on high-level concepts that are then readily mapped into an implementation. Accordingly, we have two distinct implementations: an OCaml stream library, staged via MetaOCaml, and a Scala library for the JVM, staged via LMS. In both cases, we derive libraries richer and simultaneously many tens of times faster than past work. We greatly exceed in performance the standard stream libraries available in Java, Scala and OCaml, including the well-optimized Java 8 streams.”

/from https://strymonas.github.io/ via https://github.com/stedolan/ppx_stage
PLT  paper  OCaml  performance  low-level  optimization  stream-fusion  multi-stage-programming  to-read 
6 weeks ago by elliottcable

« earlier    

related tags

&funny  &hackish  1  algorithms  allocation  amd  api  architecture  arduino  article  asm  assembler  assembly  binaries  bit-shifting  blog  board  book  books  boot  bugs  c++  c  calls  coding  compiler  computer-graphics  computer  container  containers  cool  cpp  cpu  crafted  cs  css  data-engineering  data-structure  data-structures  data  db  debugging  decompilation  defense  design  development  diy  docker  e-learning  elf  embedded  emulator  exploit  exploits  file-format  firmware  forth  framework  function  functional-programming  functor  generator  github  go  golang  graphics-programming  graphics  hack  hacker-news-comments  hacking  hacks  hand  hardware  http  https  ifttt  illustrated  inheritance  intel  interesting  interpreter  interview  java  javascript  jit  jsfuck  kernel  language  languages  layout  learning  library  linux  livestream  lua  mac  machine-code  make  malware  memory-management  memory  minimal  mitigation  module  mov  multi-stage-programming  network  networking  ocaml  opensource  operating-systems  operating  optimization  optimized  os  osdev  paper  parsing  part  performance  pico8  pixel-art  plt  poc  powershell  processor  programming  protocol  python  recommended  recon  reference  replacement  research  retro  reverse-engineering  roadmap  security  server  sgx  shellcode  software  ssl  storage  stream-fusion  strip  system-level  system  systems  technical  technique  tls  to-read  trustzone  tutorial  tutorials  uefi  video  vm  vulnerability  wasm  web  webservice  windows  wireshark  writing  x86  youtube  zetcode 

Copy this bookmark:



description:


tags: