Optimizing SYB traversals is easy

The most widely used generic-programming system in the Haskell community, Scrap Your Boilerplate (SYB), also happens to be one of the slowest. Generic traversals in SYB are often an order of magnitude slower than equivalent handwritten, non-generic traversals. Thus while SYB allows the concise expre...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Science of computer programming Jg. 112; S. 170 - 193
Hauptverfasser: Adams, Michael D., Farmer, Andrew, Magalhães, José Pedro
Format: Journal Article
Sprache:Englisch
Veröffentlicht: Elsevier B.V 15.11.2015
Schlagworte:
ISSN:0167-6423, 1872-7964
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Abstract The most widely used generic-programming system in the Haskell community, Scrap Your Boilerplate (SYB), also happens to be one of the slowest. Generic traversals in SYB are often an order of magnitude slower than equivalent handwritten, non-generic traversals. Thus while SYB allows the concise expression of many traversals, its use incurs a significant runtime cost. Existing techniques for optimizing other generic-programming systems are not able to eliminate this overhead. This paper presents an optimization that eliminates this cost. Essentially, it is a partial evaluation that takes advantage of domain-specific knowledge about the structure of SYB. It optimizes SYB traversals to be as fast as handwritten, non-generic code, and benchmarks show that this optimization improves the speed of SYB traversals by an order of magnitude or more. •We investigate the reasons behind the poor performance of SYB.•We develop an optimization for SYB using HERMIT.•Our optimization improves SYB's performance to match that of handwritten code.•We confirm these performance improvements with benchmarks.•We adapt GHC to perform our optimization without the need for HERMIT.
AbstractList The most widely used generic-programming system in the Haskell community, Scrap Your Boilerplate (SYB), also happens to be one of the slowest. Generic traversals in SYB are often an order of magnitude slower than equivalent handwritten, non-generic traversals. Thus while SYB allows the concise expression of many traversals, its use incurs a significant runtime cost. Existing techniques for optimizing other generic-programming systems are not able to eliminate this overhead. This paper presents an optimization that eliminates this cost. Essentially, it is a partial evaluation that takes advantage of domain-specific knowledge about the structure of SYB. It optimizes SYB traversals to be as fast as handwritten, non-generic code, and benchmarks show that this optimization improves the speed of SYB traversals by an order of magnitude or more. •We investigate the reasons behind the poor performance of SYB.•We develop an optimization for SYB using HERMIT.•Our optimization improves SYB's performance to match that of handwritten code.•We confirm these performance improvements with benchmarks.•We adapt GHC to perform our optimization without the need for HERMIT.
Author Farmer, Andrew
Magalhães, José Pedro
Adams, Michael D.
Author_xml – sequence: 1
  givenname: Michael D.
  surname: Adams
  fullname: Adams, Michael D.
  organization: School of Computing, University of Utah, United States
– sequence: 2
  givenname: Andrew
  surname: Farmer
  fullname: Farmer, Andrew
  email: afarmer@ittc.ku.edu
  organization: Information and Telecommunication Technology Center, University of Kansas, United States
– sequence: 3
  givenname: José Pedro
  surname: Magalhães
  fullname: Magalhães, José Pedro
  email: jpm@cs.ox.ac.uk
  organization: Department of Computer Science, University of Oxford, United Kingdom
BookMark eNqFj8tOwzAQRS1UJNLCF7AJH5AwjmM7WbCAipdUqQtgwcryY4octUllR5XK1-NSVixgNbqae0ZzpmTSDz0SckmhpEDFdVdG6-1QVkB5CW0JwE5IRhtZFbIV9YRkqSULUVfsjExj7ABA1JJm5Gq5Hf3Gf_r-I395v8vHoHcYol7H3Mccddyfk9NVinjxM2fk7eH-df5ULJaPz_PbRWEZsLGwBoSobCUot1UNHGnLXcNXkmnjpECQNTWNsbZBLY1zjnJjHOcauU7rls1Ie7xrwxBjwJWyftSjH_r0k18rCurgqjr17aoOrgpalVwTy36x2-A3Ouz_oW6OFCatncdw6GBv0fmAdlRu8H_yX7hRcLI
CitedBy_id crossref_primary_10_1145_3110273
crossref_primary_10_1145_3236780
Cites_doi 10.1017/S0956796802004331
10.1017/S0956796803004751
10.1145/954063.954069
10.1017/S0956796814000185
10.1145/5956.5957
ContentType Journal Article
Copyright 2015
Copyright_xml – notice: 2015
DBID 6I.
AAFTH
AAYXX
CITATION
DOI 10.1016/j.scico.2015.09.003
DatabaseName ScienceDirect Open Access Titles
Elsevier:ScienceDirect:Open Access
CrossRef
DatabaseTitle CrossRef
DatabaseTitleList
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 1872-7964
EndPage 193
ExternalDocumentID 10_1016_j_scico_2015_09_003
S0167642315002622
GroupedDBID --K
--M
.DC
.~1
0R~
123
1B1
1RT
1~.
1~5
4.4
457
4G.
5VS
6I.
7-5
71M
8P~
9JN
AACTN
AAEDW
AAFTH
AAIAV
AAIKJ
AAKOC
AALRI
AAOAW
AAQFI
AAXUO
AAYFN
ABBOA
ABJNI
ABMAC
ABVKL
ABYKQ
ACDAQ
ACGFS
ACRLP
ACZNC
ADBBV
ADEZE
ADHUB
AEBSH
AEKER
AENEX
AEXQZ
AFKWA
AFTJW
AGUBO
AGYEJ
AHHHB
AHZHX
AIALX
AIEXJ
AIKHN
AITUG
AJBFU
AJOXV
ALMA_UNASSIGNED_HOLDINGS
AMFUW
AMRAJ
AOUOD
AXJTR
BKOJK
BLXMC
CS3
DU5
E.L
EBS
EFJIC
EFLBG
EJD
EO8
EO9
EP2
EP3
FDB
FEDTE
FIRID
FNPLU
FYGXN
G-Q
GBLVA
GBOLZ
HVGLF
IHE
IXB
J1W
KOM
LG9
M26
M41
MO0
N9A
NCXOZ
O-L
O9-
OAUVE
OK1
OZT
P-8
P-9
P2P
PC.
Q38
RIG
ROL
RPZ
SDF
SDG
SDP
SES
SPC
SPCBC
SSV
SSZ
T5K
TN5
XPP
ZMT
~G-
9DU
AAEDT
AAQXK
AATTM
AAXKI
AAYWO
AAYXX
ABFNM
ABWVN
ABXDB
ACLOT
ACNNM
ACRPL
ACVFH
ADCNI
ADMUD
ADNMO
ADVLN
AEIPS
AEUPX
AFFNX
AFJKZ
AFPUW
AGHFR
AGQPQ
AIGII
AIIUN
AKBMS
AKRWK
AKYEP
ANKPU
APXCP
ASPBG
AVWKF
AZFZN
CITATION
EFKBS
FGOYB
G-2
HZ~
R2-
SEW
WUQ
ZY4
~HD
ID FETCH-LOGICAL-c303t-cb0662c2615c2405e195d85f73abd76e0741b8bcc8ea7bddd15bbd55ae5a76e93
ISICitedReferencesCount 4
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000364881700004&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
ISSN 0167-6423
IngestDate Sat Nov 29 07:21:24 EST 2025
Tue Nov 18 20:53:10 EST 2025
Fri Feb 23 02:37:17 EST 2024
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Keywords Haskell
Scrap Your Boilerplate (SYB)
Partial evaluation
Datatype-generic programming
Optimization
Language English
License http://www.elsevier.com/open-access/userlicense/1.0
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-c303t-cb0662c2615c2405e195d85f73abd76e0741b8bcc8ea7bddd15bbd55ae5a76e93
OpenAccessLink https://dx.doi.org/10.1016/j.scico.2015.09.003
PageCount 24
ParticipantIDs crossref_citationtrail_10_1016_j_scico_2015_09_003
crossref_primary_10_1016_j_scico_2015_09_003
elsevier_sciencedirect_doi_10_1016_j_scico_2015_09_003
PublicationCentury 2000
PublicationDate 2015-11-15
PublicationDateYYYYMMDD 2015-11-15
PublicationDate_xml – month: 11
  year: 2015
  text: 2015-11-15
  day: 15
PublicationDecade 2010
PublicationTitle Science of computer programming
PublicationYear 2015
Publisher Elsevier B.V
Publisher_xml – name: Elsevier B.V
References Rodriguez, Jeuring, Jansson, Gerdes, Kiselyov, Oliveira (br0240) 2008
Turchin (br0300) Jun. 1986; 8
Augustsson (br0040) Nov. 2011
(br0130) 2013
Gill (br0110) 2009; vol. 5658
Adams, DuBuisson (br0010) 2012
Baker-Finch, Glynn, Peyton Jones (br0050) Mar. 2004; 14
Brown, Sampson (br0070) 2009
(br0100) 2013
Ma-ga-lhães, Holdermans, Jeuring, Löh (br0200) 2010
Turchin (br0290) Feb. 1979; 14
Chakravarty, Ditu, Leshchinskiy (br0080) 2009
Vytiniotis, Peyton Jones, Magalhães (br0310) 2012
Farmer, Gill, Komp, Sculthorpe (br0090) 2012
Jones (br0140) Sep. 1995; 8
Bolingbroke, Peyton Jones (br0060) 2010
Jonsson, Nordlander (br0160) 2011
Adams, Farmer, Magalhães (br0020) 2014
Peyton Jones (br0220) 2007
Rodriguez Yakushev (br0250) 2009
Alimarine, Smetsers (br0030) 2004; vol. 3125
Hinze, Löh, Oliveira (br0120) 2006; vol. 3945
Peyton Jones, Marlow (br0230) Jul. 2002; 12
Jones, Gomard, Sestof (br0150) 1993
Mitchell, Runciman (br0210) 2007
Santos (br0260) 1995
Magalhães (br0190) 2013
Sculthorpe, Frisby, Gill (br0280) Jul. 2014; 24
Sculthorpe, Farmer, Gill (br0270) 2013
Lämmel, Peyton Jones (br0180) 2004
Lämmel, Peyton Jones (br0170) 2003
Alimarine (10.1016/j.scico.2015.09.003_br0030) 2004; vol. 3125
Peyton Jones (10.1016/j.scico.2015.09.003_br0220) 2007
Jones (10.1016/j.scico.2015.09.003_br0140) 1995; 8
Sculthorpe (10.1016/j.scico.2015.09.003_br0280) 2014; 24
Magalhães (10.1016/j.scico.2015.09.003_br0190) 2013
Turchin (10.1016/j.scico.2015.09.003_br0290) 1979; 14
Vytiniotis (10.1016/j.scico.2015.09.003_br0310) 2012
Ma-ga-lhães (10.1016/j.scico.2015.09.003_br0200) 2010
Santos (10.1016/j.scico.2015.09.003_br0260) 1995
Bolingbroke (10.1016/j.scico.2015.09.003_br0060) 2010
Jones (10.1016/j.scico.2015.09.003_br0150) 1993
Farmer (10.1016/j.scico.2015.09.003_br0090) 2012
Baker-Finch (10.1016/j.scico.2015.09.003_br0050) 2004; 14
Hinze (10.1016/j.scico.2015.09.003_br0120) 2006; vol. 3945
Sculthorpe (10.1016/j.scico.2015.09.003_br0270) 2013
Jonsson (10.1016/j.scico.2015.09.003_br0160) 2011
Adams (10.1016/j.scico.2015.09.003_br0010) 2012
Gill (10.1016/j.scico.2015.09.003_br0110) 2009; vol. 5658
Peyton Jones (10.1016/j.scico.2015.09.003_br0230) 2002; 12
Adams (10.1016/j.scico.2015.09.003_br0020) 2014
Rodriguez Yakushev (10.1016/j.scico.2015.09.003_br0250) 2009
Turchin (10.1016/j.scico.2015.09.003_br0300) 1986; 8
Chakravarty (10.1016/j.scico.2015.09.003_br0080)
Brown (10.1016/j.scico.2015.09.003_br0070) 2009
Rodriguez (10.1016/j.scico.2015.09.003_br0240) 2008
Augustsson (10.1016/j.scico.2015.09.003_br0040)
Lämmel (10.1016/j.scico.2015.09.003_br0180) 2004
Lämmel (10.1016/j.scico.2015.09.003_br0170) 2003
Mitchell (10.1016/j.scico.2015.09.003_br0210) 2007
References_xml – volume: vol. 3945
  start-page: 13
  year: 2006
  end-page: 29
  ident: br0120
  article-title: “Scrap your boilerplate” reloaded
  publication-title: Functional and Logic Programming
– year: 1995
  ident: br0260
  article-title: Compilation by transformation in non-strict functional languages
– volume: 14
  start-page: 46
  year: Feb. 1979
  end-page: 54
  ident: br0290
  article-title: A supercompiler system based on the language REFAL
  publication-title: ACM SIGPLAN Not.
– volume: 8
  start-page: 229
  year: Sep. 1995
  end-page: 248
  ident: br0140
  article-title: Dictionary-free overloading by partial evaluation
  publication-title: LISP Symb. Comput.
– volume: 24
  start-page: 434
  year: Jul. 2014
  end-page: 473
  ident: br0280
  article-title: The Kansas University rewrite engine: a Haskell-embedded strategic programming language with custom closed universes
  publication-title: J. Funct. Program.
– start-page: 71
  year: 2014
  end-page: 82
  ident: br0020
  article-title: Optimizing SYB is easy!
  publication-title: Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
– volume: 12
  start-page: 393
  year: Jul. 2002
  end-page: 434
  ident: br0230
  article-title: Secrets of the Glasgow Haskell Compiler inliner
  publication-title: J. Funct. Program.
– start-page: 327
  year: 2007
  end-page: 337
  ident: br0220
  article-title: Call-pattern specialisation for Haskell programs
  publication-title: Proceedings of the 12th ACM SIGPLAN International Conference on Functional Programming
– year: 2009
  ident: br0080
  article-title: Instant generics: fast and easy
– start-page: 105
  year: 2009
  end-page: 116
  ident: br0070
  article-title: Alloy: fast generic transformations for Haskell
  publication-title: Proceedings of the 2nd ACM SIGPLAN Symposium on Haskell
– start-page: 49
  year: 2007
  end-page: 60
  ident: br0210
  article-title: Uniform boilerplate and list processing
  publication-title: Proceedings of the ACM SIGPLAN Workshop on Haskell Workshop
– start-page: 135
  year: 2010
  end-page: 146
  ident: br0060
  article-title: Supercompilation by evaluation
  publication-title: Proceedings of the Third ACM Haskell Symposium on Haskell
– start-page: 1
  year: 2012
  end-page: 12
  ident: br0090
  article-title: The HERMIT in the machine: a plugin for the interactive transformation of GHC core language programs
  publication-title: Proceedings of the 2012 Haskell Symposium
– volume: vol. 5658
  start-page: 285
  year: 2009
  end-page: 309
  ident: br0110
  article-title: A Haskell hosted DSL for writing transformation systems
  publication-title: Domain-Specific Languages
– year: 2009
  ident: br0250
  article-title: Towards getting generic programming ready for prime time
– start-page: 341
  year: 2012
  end-page: 352
  ident: br0310
  article-title: Equality proofs and deferred type errors: a compiler pearl
  publication-title: Proceedings of the 17th ACM SIGPLAN International Conference on Functional Programming
– year: 2013
  ident: br0100
  article-title: The glorious Glasgow Haskell compilation system user's guide
– start-page: 13
  year: 2012
  end-page: 24
  ident: br0010
  article-title: Template your boilerplate: using Template Haskell for efficient generic programming
  publication-title: Proceedings of the 2012 Symposium on Haskell Symposium
– year: 2013
  ident: br0270
  article-title: The HERMIT in the tree: mechanizing program transformations in the GHC core language
  publication-title: Implementation and Application of Functional Languages
– volume: 14
  start-page: 211
  year: Mar. 2004
  end-page: 245
  ident: br0050
  article-title: Constructed product result analysis for Haskell
  publication-title: J. Funct. Program.
– volume: vol. 3125
  start-page: 16
  year: 2004
  end-page: 31
  ident: br0030
  article-title: Optimizing generic functions
  publication-title: Mathematics of Program Construction
– year: 2013
  ident: br0130
  article-title: Hackage: total downloads
– start-page: 33
  year: 2010
  end-page: 42
  ident: br0200
  article-title: Optimizing generics is easy!
  publication-title: Proceedings of the 2010 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation
– year: Nov. 2011
  ident: br0040
– start-page: 104
  year: 2013
  end-page: 121
  ident: br0190
  article-title: Optimisation of generic programs through inlining
  publication-title: Implementation and Application of Functional Languages
– year: 2008
  ident: br0240
  article-title: Comparing libraries for generic programming in Haskell
– start-page: 26
  year: 2003
  end-page: 37
  ident: br0170
  article-title: Scrap your boilerplate: a practical design pattern for generic programming
  publication-title: Proceedings of the 2003 ACM SIGPLAN International Workshop on Types in Languages Design and Implementation
– start-page: 244
  year: 2004
  end-page: 255
  ident: br0180
  article-title: Scrap more boilerplate: reflection, zips, and generalised casts
  publication-title: Proceedings of the Ninth ACM SIGPLAN International Conference on Functional Programming
– start-page: 33
  year: 2011
  end-page: 42
  ident: br0160
  article-title: Taming code explosion in supercompilation
  publication-title: Proceedings of the 20th ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation
– volume: 8
  start-page: 292
  year: Jun. 1986
  end-page: 325
  ident: br0300
  article-title: The concept of a supercompiler
  publication-title: ACM Trans. Program. Lang. Syst.
– year: 1993
  ident: br0150
  article-title: Partial Evaluation and Automatic Program Generation
  publication-title: Prentice-Hall International Series in Computer Science
– start-page: 26
  year: 2003
  ident: 10.1016/j.scico.2015.09.003_br0170
  article-title: Scrap your boilerplate: a practical design pattern for generic programming
– year: 2008
  ident: 10.1016/j.scico.2015.09.003_br0240
– start-page: 341
  year: 2012
  ident: 10.1016/j.scico.2015.09.003_br0310
  article-title: Equality proofs and deferred type errors: a compiler pearl
– year: 2009
  ident: 10.1016/j.scico.2015.09.003_br0250
– volume: vol. 3125
  start-page: 16
  year: 2004
  ident: 10.1016/j.scico.2015.09.003_br0030
  article-title: Optimizing generic functions
– start-page: 71
  year: 2014
  ident: 10.1016/j.scico.2015.09.003_br0020
  article-title: Optimizing SYB is easy!
– start-page: 327
  year: 2007
  ident: 10.1016/j.scico.2015.09.003_br0220
  article-title: Call-pattern specialisation for Haskell programs
– volume: 12
  start-page: 393
  issue: 4–5
  year: 2002
  ident: 10.1016/j.scico.2015.09.003_br0230
  article-title: Secrets of the Glasgow Haskell Compiler inliner
  publication-title: J. Funct. Program.
  doi: 10.1017/S0956796802004331
– volume: 14
  start-page: 211
  issue: 02
  year: 2004
  ident: 10.1016/j.scico.2015.09.003_br0050
  article-title: Constructed product result analysis for Haskell
  publication-title: J. Funct. Program.
  doi: 10.1017/S0956796803004751
– start-page: 244
  year: 2004
  ident: 10.1016/j.scico.2015.09.003_br0180
  article-title: Scrap more boilerplate: reflection, zips, and generalised casts
– volume: 14
  start-page: 46
  issue: 2
  year: 1979
  ident: 10.1016/j.scico.2015.09.003_br0290
  article-title: A supercompiler system based on the language REFAL
  publication-title: ACM SIGPLAN Not.
  doi: 10.1145/954063.954069
– volume: 8
  start-page: 229
  issue: 3
  year: 1995
  ident: 10.1016/j.scico.2015.09.003_br0140
  article-title: Dictionary-free overloading by partial evaluation
  publication-title: LISP Symb. Comput.
– start-page: 1
  year: 2012
  ident: 10.1016/j.scico.2015.09.003_br0090
  article-title: The HERMIT in the machine: a plugin for the interactive transformation of GHC core language programs
– ident: 10.1016/j.scico.2015.09.003_br0040
– volume: 24
  start-page: 434
  issue: 04
  year: 2014
  ident: 10.1016/j.scico.2015.09.003_br0280
  article-title: The Kansas University rewrite engine: a Haskell-embedded strategic programming language with custom closed universes
  publication-title: J. Funct. Program.
  doi: 10.1017/S0956796814000185
– volume: 8
  start-page: 292
  issue: 3
  year: 1986
  ident: 10.1016/j.scico.2015.09.003_br0300
  article-title: The concept of a supercompiler
  publication-title: ACM Trans. Program. Lang. Syst.
  doi: 10.1145/5956.5957
– year: 1993
  ident: 10.1016/j.scico.2015.09.003_br0150
  article-title: Partial Evaluation and Automatic Program Generation
– volume: vol. 3945
  start-page: 13
  year: 2006
  ident: 10.1016/j.scico.2015.09.003_br0120
  article-title: “Scrap your boilerplate” reloaded
– start-page: 33
  year: 2011
  ident: 10.1016/j.scico.2015.09.003_br0160
  article-title: Taming code explosion in supercompilation
– year: 1995
  ident: 10.1016/j.scico.2015.09.003_br0260
– year: 2013
  ident: 10.1016/j.scico.2015.09.003_br0270
  article-title: The HERMIT in the tree: mechanizing program transformations in the GHC core language
– start-page: 104
  year: 2013
  ident: 10.1016/j.scico.2015.09.003_br0190
  article-title: Optimisation of generic programs through inlining
– start-page: 105
  year: 2009
  ident: 10.1016/j.scico.2015.09.003_br0070
  article-title: Alloy: fast generic transformations for Haskell
– start-page: 13
  year: 2012
  ident: 10.1016/j.scico.2015.09.003_br0010
  article-title: Template your boilerplate: using Template Haskell for efficient generic programming
– start-page: 49
  year: 2007
  ident: 10.1016/j.scico.2015.09.003_br0210
  article-title: Uniform boilerplate and list processing
– start-page: 135
  year: 2010
  ident: 10.1016/j.scico.2015.09.003_br0060
  article-title: Supercompilation by evaluation
– start-page: 33
  year: 2010
  ident: 10.1016/j.scico.2015.09.003_br0200
  article-title: Optimizing generics is easy!
– ident: 10.1016/j.scico.2015.09.003_br0080
– volume: vol. 5658
  start-page: 285
  year: 2009
  ident: 10.1016/j.scico.2015.09.003_br0110
  article-title: A Haskell hosted DSL for writing transformation systems
SSID ssj0006471
Score 2.0940807
Snippet The most widely used generic-programming system in the Haskell community, Scrap Your Boilerplate (SYB), also happens to be one of the slowest. Generic...
SourceID crossref
elsevier
SourceType Enrichment Source
Index Database
Publisher
StartPage 170
SubjectTerms Datatype-generic programming
Haskell
Optimization
Partial evaluation
Scrap Your Boilerplate (SYB)
Title Optimizing SYB traversals is easy
URI https://dx.doi.org/10.1016/j.scico.2015.09.003
Volume 112
WOSCitedRecordID wos000364881700004&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVESC
  databaseName: Elsevier SD Freedom Collection Journals 2021
  customDbUrl:
  eissn: 1872-7964
  dateEnd: 20180131
  omitProxy: false
  ssIdentifier: ssj0006471
  issn: 0167-6423
  databaseCode: AIEXJ
  dateStart: 19950201
  isFulltext: true
  titleUrlDefault: https://www.sciencedirect.com
  providerName: Elsevier
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV3dT9swELemdg-88LUhvoaCxFsXlDR1Yj-WAdomxJBWUHmKbOfQWq0BNQUh_nrOX2mnThUg8WJVadw6vst9_nxHyIGgEpUQg5BzUGEHZBRK5Bwc2kmnEyVcGbT71Vl2fs76fX7hQOyVaSeQlSV7fOR370pqvIbE1kdnX0Hu-kfxAn5GouOIZMfxRYT_hUJgNHgylbavj3QPCI280FWSB1ULRPVPHte_2g5crvs7eMjWyCs1k813IRmHsm8dH9aEF2PXgGUGG2lC3Kh7_pg8fAI-2WDT8q0LKMa3s_GGmOqDd_bEpQ2CzR2EsXFJlLfoylhZBVaWsgyNd26LlNfC1oGmrbiMbdMQp3lj2ytxTqjb-MIQ3X18OTQaj5rStFEy1WE1svC3XoleCBq66F62UTs32xnlrEGa3R8n_Z-1mk6tN16v3JekMuC_ub_6v9kyY4r0Vsmy8yGCrqX9GvkA5TpZ8f05AkfTT2R_ygoBskIwZYVgUAWaFT6Ty9OT3rfvoWuJESq0NSahkrpiv0K3lyq0xSjEnBaM3mSJkEWWgjYQJZNKMRCZLIoiplIWlAqgAr_myQZplLclbJIgE5LyG5BFItJOJCMODNAaF-jiKpoy2CJt_8S5cvXidduSv7kHBg5zs0253qY84rrM7Bb5Wk-6s-VSFt-e-q3MncVnLbkcab9o4vZbJ-6QpSlT75LGZHwPX8hH9TAZVOM9xyPP4OZ23Q
linkProvider Elsevier
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Optimizing+SYB+traversals+is+easy&rft.jtitle=Science+of+computer+programming&rft.au=Adams%2C+Michael+D.&rft.au=Farmer%2C+Andrew&rft.au=Magalh%C3%A3es%2C+Jos%C3%A9+Pedro&rft.date=2015-11-15&rft.pub=Elsevier+B.V&rft.issn=0167-6423&rft.eissn=1872-7964&rft.volume=112&rft.spage=170&rft.epage=193&rft_id=info:doi/10.1016%2Fj.scico.2015.09.003&rft.externalDocID=S0167642315002622
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0167-6423&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0167-6423&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0167-6423&client=summon