Who You Gonna Call? A study of the call-site behaviour of Ruby-on-Rails applications (poster)
Web-applications are ubiquitous, from simple personal blogs toe-commerce platforms with millions of sales. Ruby-on-Rails is a popular framework implemented in Ruby that provides tools to build such web-applications. Performance is often critical in the context of large-scale web-applications; especially in dynamic languages such as Ruby that feature reflection and the use of many small methods. Such languages therefore benefit from run-time optimisations, notably through the combined use of lookup caches, splitting and inlining. To limit their overhead, such optimisations generally rely on assumptions that do not necessarily match with the actual run-time behaviour. With Phase-based splitting, we showed that splitting can benefit from using homogeneous patterns of behaviour, called “phases” to reach better performance. In an effort to identify such phases in real-world web-applications, we thoroughly analyse the run-time call-site behaviour of Ruby programs and Ruby-on-Rails applications, running on top of TruffleRuby . This poster describes our findings and aims at guiding future research on call-site optimisation.