Implementation of the typed call-by-value λ-calculus using a stack of regions
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Region-based memory management
Information and Computation
Escape analysis: correctness proof, implementation and experimental results
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typed memory management in a calculus of capabilities
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
BI as an assertion language for mutable data structures
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Interprocedural compatibility analysis for static object preallocation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Another Type System for In-Place Update
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Efficient Compile-Time Garbage Collection for Arbitrary Data Structures
PLILPS '95 Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Inserting safe memory reuse commands into ML-like programs
SAS'03 Proceedings of the 10th international conference on Static analysis
Free-Me: a static analysis for automatic individual object reclamation
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Object co-location and memory reuse for Java programs
ACM Transactions on Architecture and Code Optimization (TACO)
Just-in-time compiler assisted object reclamation and space reuse
NPC'10 Proceedings of the 2010 IFIP international conference on Network and parallel computing
Hi-index | 0.00 |
We present extensive experimental results on our static analysis and source-level transformation [12, 11] that adds explicit memory-reuse commands into ML program text. Our analysis and transformation cost is negligible (1,582 to 29,000 lines per seconds) enough to be used in daily programming. The payoff is the reduction of memory peaks and the total garbage collection time. The transformed programs reuse 3.4% to 93.9% of total allocated memory cells, and the memory peak is reduced by 0.0% to 71.9%. When the memory peak reduction is large enough to overcome the costs of dynamic flags and the memory reuse in the generational garbage collection, it speeds up program's execution by up to 39.1%. Otherwise, our transformation can slowdown programs by up to 7.3%. The speedup is likely only when the portion of garbage collection time among the total execution time is more than about 30%.