low-level   498

« 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 
11 weeks 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 
august 2018 by elliottcable
Machine, Think!
Matthijs Hollemans is an independent consultant, app developer, and author of The iOS Apprentice.
algorithms  apprentice  code  deep  development  expert  graphics  ios  ipad  iphone  learning  low-level  machine  math  programming  software 
june 2018 by ohnice

« earlier    

related tags

1  algorithms  allocation  amd  api  apprentice  architecture  arduino  article  asm  assembler  assembly  binaries  bit-shifting  blog  board  book  books  boot  bugs  c++  c  calls  code-alignment  code  coding  compilation  compiler  computer-graphics  container  containers  cool  cpp  cpu  crafted  cs  data-engineering  data-structure  data-structures  data  db  debugging  decompilation  deep  defense  design  development  diy  docker  e-learning  embedded  emulator  expert  exploit  exploits  file-format  firmware  forth  function  functional-programming  functor  github  go  golang  graphics-programming  graphics  hack  hacker-news-comments  hacking  hacks  hand  hardware  http  https  ifttt  illustrated  inheritance  intel  interesting  interpreter  interview  ios  ipad  iphone  java  jit  kernel  language  languages  layout  learning  linux-kernel  linux  livestream  llvm  lua  mac  machine-code  machine  math  memory-management  memory  mitigation  module  mov  multi-stage-programming  network  networking  ocaml  opensource  operating-systems  operating  optimization  optimized  os  osdev  paper  part  performance  pico8  pixel-art  plt  poc  powershell  processor  programming  protocol  python  recommended  recon  reference  replacement  research  retro  reverse-engineering  roadmap  rop  security  server  sgx  shellcode  software  ssl  storage  stream-fusion  system-level  system-programming  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: