This document presents an aspect-oriented approach to improving productivity in dynamic languages through the use of typing concerns. It introduces type advice, which advises type information at specific join points to improve performance while maintaining productivity. Experiments show that applying type advice to a dynamic language like Groovy reduces compilation and execution times compared to the base language. This demonstrates that typing concerns can enhance the productivity of dynamic languages.
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++jamieayre
Modern computer systems have intricate memory hierarchies that violate the intuition of a global timeline of interleaved memory accesses. In these so-called relaxed-memory systems, it can be dangerous to use intuition, specifications are universally unreliable, and the outcome of testing is both wildly nondeterministic and dependent on hardware that is getting more permissive of odd behaviour with each generation. These complications pervade the whole system, and have led to bugs in language specifications, deployed processors, compilers, and vendor-endorsed programming idioms – it is clear that current engineering practice is severely lacking.
I will describe my part of a sustained effort in the academic community to tackle these problems by applying a range of techniques, from exhaustive testing to mechanised formal specification and proof. I will focus on a vein of work with strong industrial impact: the formalisation, refinement and validation of the 2011/14/17 C and C++ concurrency design, leading to changes in the ratified international standard, and ultimately uncovering fundamental flaws that lead us to the state of the art in concurrent language specification. This work represents an essential enabling step for verification on modern concurrent systems
A Follow-up Cg Runtime Tutorial for Readers of The Cg TutorialMark Kilgard
A tutorial intended to help readers of "The Cg Tutorial" learn how to use the Cg runtime library to write a complete sample application that renders a bump-mapped torus. The torus is shaded by Cg vertex and fragment programs explained in Chapter 8 of "The Cg Tutorial" (ISBN 0321194969).
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++jamieayre
Modern computer systems have intricate memory hierarchies that violate the intuition of a global timeline of interleaved memory accesses. In these so-called relaxed-memory systems, it can be dangerous to use intuition, specifications are universally unreliable, and the outcome of testing is both wildly nondeterministic and dependent on hardware that is getting more permissive of odd behaviour with each generation. These complications pervade the whole system, and have led to bugs in language specifications, deployed processors, compilers, and vendor-endorsed programming idioms – it is clear that current engineering practice is severely lacking.
I will describe my part of a sustained effort in the academic community to tackle these problems by applying a range of techniques, from exhaustive testing to mechanised formal specification and proof. I will focus on a vein of work with strong industrial impact: the formalisation, refinement and validation of the 2011/14/17 C and C++ concurrency design, leading to changes in the ratified international standard, and ultimately uncovering fundamental flaws that lead us to the state of the art in concurrent language specification. This work represents an essential enabling step for verification on modern concurrent systems
A Follow-up Cg Runtime Tutorial for Readers of The Cg TutorialMark Kilgard
A tutorial intended to help readers of "The Cg Tutorial" learn how to use the Cg runtime library to write a complete sample application that renders a bump-mapped torus. The torus is shaded by Cg vertex and fragment programs explained in Chapter 8 of "The Cg Tutorial" (ISBN 0321194969).
Culture et recherche : les publics in-situ et en ligneLa French Team
Que savons-nous aujourd’hui des publics in situ et des publics en ligne, des usages que les uns et les autres font de l’offre proposée par les équipements culturels, et surtout des relations qu’ils entretiennent ?
Την Κυριακή 4 Δεκεμβρίου 2016 στις 6 το απόγευμα με την ευκαιρία των εορτών των Χριστουγέννων στην αίθουσα εκδηλώσεων του Δημοτικού Σχολείου Σούρπης, με τη φροντίδα των εκπαιδευτικών και του Συλλόγου Γονέων και Κηδεμόνων του σχολείου, οργανώθηκε χριστουγεννιάτικη φιλανθρωπική αγορά. Τα είδη της αγοράς κατασκευάστηκαν από τους μαθητές των Δ΄, Ε΄, και ΣΤ΄ τάξεων με τη βοήθεια των δασκάλων και των γονέων τους.
EL AYUNTAMIENTO MANTIENE Y REFUERZA EL PLAN ESPECIAL DE LUCHA CONTRA LA POBREZAAyuntamiento de Málaga
En 2017 ascienden a 48,6 millones de euros los presupuestos de las Áreas de Derechos Sociales, Igualdad y Participación y de la Empresa Municipal Más Cerca
Se destinan 11,3 millones a los Presupuestos Participativos, el doble que el ejercicio anterior
Se prioriza la atención a las mujeres víctimas de violencia de género
El Servicio de Ayuda a Domicilio contará con 3,2 millones de euros
Delivery Pipelines as a First Class Citizen @deliverAgile2019ciberkleid
In this talk, we will cover important elements for successful CI and CD. We will discuss how these elements make CI and CD much simpler, and hence more attainable. We will cover some best practices / recommendations to include in your application pipelines. We will look at a sample implementation of a pipeline leveraging modern tools. Finally, we will discuss some forthcoming ideas for making it even easier to declaratively enable CI and CD for applications.
Deterministic Galois: On-demand, Portable and ParameterlessDonald Nguyen
Non-determinism in program execution can make program development and debugging difficult. In this paper, we argue that solutions to this problem should be on-demand, portable and parameterless. On-demand means that the programming model should permit the writing of non-deterministic pro- grams since these programs often perform better than deterministic programs for the same problem. Portable means that the program should produce the same answer even if it is run on different machines. Parameterless means that if there are machine-dependent scheduling parameters that must be tuned for good performance, they must not affect the output.
Although many solutions for deterministic program execution have been proposed in the literature, they fall short along one or more of these dimensions. To remedy this, we propose a new approach, based on the Galois programming model, in which (i) the programming model permits the writing of non-deterministic programs and (ii) the runtime system executes these programs deterministically if needed. Evaluation of this approach on a collection of benchmarks from the PARSEC, PBBS, and Lonestar suites shows that it delivers deterministic execution with substantially less overhead than other systems in the literature.
Culture et recherche : les publics in-situ et en ligneLa French Team
Que savons-nous aujourd’hui des publics in situ et des publics en ligne, des usages que les uns et les autres font de l’offre proposée par les équipements culturels, et surtout des relations qu’ils entretiennent ?
Την Κυριακή 4 Δεκεμβρίου 2016 στις 6 το απόγευμα με την ευκαιρία των εορτών των Χριστουγέννων στην αίθουσα εκδηλώσεων του Δημοτικού Σχολείου Σούρπης, με τη φροντίδα των εκπαιδευτικών και του Συλλόγου Γονέων και Κηδεμόνων του σχολείου, οργανώθηκε χριστουγεννιάτικη φιλανθρωπική αγορά. Τα είδη της αγοράς κατασκευάστηκαν από τους μαθητές των Δ΄, Ε΄, και ΣΤ΄ τάξεων με τη βοήθεια των δασκάλων και των γονέων τους.
EL AYUNTAMIENTO MANTIENE Y REFUERZA EL PLAN ESPECIAL DE LUCHA CONTRA LA POBREZAAyuntamiento de Málaga
En 2017 ascienden a 48,6 millones de euros los presupuestos de las Áreas de Derechos Sociales, Igualdad y Participación y de la Empresa Municipal Más Cerca
Se destinan 11,3 millones a los Presupuestos Participativos, el doble que el ejercicio anterior
Se prioriza la atención a las mujeres víctimas de violencia de género
El Servicio de Ayuda a Domicilio contará con 3,2 millones de euros
Delivery Pipelines as a First Class Citizen @deliverAgile2019ciberkleid
In this talk, we will cover important elements for successful CI and CD. We will discuss how these elements make CI and CD much simpler, and hence more attainable. We will cover some best practices / recommendations to include in your application pipelines. We will look at a sample implementation of a pipeline leveraging modern tools. Finally, we will discuss some forthcoming ideas for making it even easier to declaratively enable CI and CD for applications.
Deterministic Galois: On-demand, Portable and ParameterlessDonald Nguyen
Non-determinism in program execution can make program development and debugging difficult. In this paper, we argue that solutions to this problem should be on-demand, portable and parameterless. On-demand means that the programming model should permit the writing of non-deterministic pro- grams since these programs often perform better than deterministic programs for the same problem. Portable means that the program should produce the same answer even if it is run on different machines. Parameterless means that if there are machine-dependent scheduling parameters that must be tuned for good performance, they must not affect the output.
Although many solutions for deterministic program execution have been proposed in the literature, they fall short along one or more of these dimensions. To remedy this, we propose a new approach, based on the Galois programming model, in which (i) the programming model permits the writing of non-deterministic programs and (ii) the runtime system executes these programs deterministically if needed. Evaluation of this approach on a collection of benchmarks from the PARSEC, PBBS, and Lonestar suites shows that it delivers deterministic execution with substantially less overhead than other systems in the literature.
Towards Quantum Machine Learning Hands-on
Machine Learning (ML) gained a lot of momentum in the last ten years, mostly thanks to the advancements in non-linear patterns discovery, and more specifically, in Deep Learning (DL). But those who think that DL is going to address all possible problems might be terribly wrong. DL and ML tasks, in general, are categorized as Non-Polynomial problems, which means that the number of possible solutions for a given problem can grow exponentially, making it intractable using the classical algorithmic approach. Here, Quantum Computing (QC) techniques have the potential to address these issues and help ML methods to solve problems faster and sometimes better than the classical counterpart. The conjunction of these two disciplines resulted in a new exciting research direction to explore: Quantum Machine Learning (QML).
● What is Unit Testing?
● Benefits
● What is Test Driven Development?
● What is Behavior Driven Development?
● Categories of (Unit) Tests / Software Testing
Pyramid, Frameworks
● C++, Java, .NET, Perl, PHP frameworks
● Unit-testing Zend Framework application
Free GitOps Workshop + Intro to Kubernetes & GitOpsWeaveworks
Follow along in this free workshop and experience GitOps!
AGENDA:
Welcome - Tamao Nakahara, Head of DX (Weaveworks)
Introduction to Kubernetes & GitOps - Mark Emeis, Principal Engineer (Weaveworks)
Weave Gitops Overview - Tamao Nakahara
Free Gitops Workshop - David Harris, Product Manager (Weaveworks)
If you're new to Kubernetes and GitOps, we'll give you a brief introduction to both and how GitOps is the natural evolution of Kubernetes.
Weave GitOps Core is a continuous delivery product to run apps in any Kubernetes. It is free and open source, and you can get started today!
https://www.weave.works/product/gitops-core
If you’re stuck, also come talk to us at our Slack channel! #weave-gitops http://bit.ly/WeaveGitOpsSlack (If you need to invite yourself to the Slack, visit https://slack.weave.works/)
Superworkflow of Graph Neural Networks with K8S and FugueDatabricks
When machine learning models are productionized, they are commonly formed as workflows with multiple tasks, managed by a task scheduler such as Airflow, Prefect. Traditionally each task within the same workflow uses similar computing frameworks (e.g. Python, Spark, and PyTorch) in the same backend computing environment (e.g. AWS EMR, Google DataProc) with globally fixed settings (e.g. instances, cores, memory).
In complicated use cases, such traditional workflows create large resource and runtime inefficiency, hence it is highly desired to use different computing frameworks in the same workflow in different computing environments. Such workflows can be named as superworkflows. Fugue is an open-sourced abstraction layer on top of different computing frameworks and creates uniform interfaces to use these frameworks without dealing with the complexities associated with them. To this end, Fugue can be viewed as a superframework.
In addition, Kubernetes (K8S) is a container orchestration system, and it is easy to create different computing environments (e.g. Spark, PyTorch) with different docker images as everything is containerized in K8S. It is natural to combine K8S and Fugue to create superworkflows for complicated machine learning problems. In this talk, we use a popular graph neural network named Node2Vec as an example to illustrate how to create an efficient superworkflow using Fugue and K8S on very large graphs with hundreds of millions of vertices and edges.
We also demonstrate how to partition the whole Node2Vec process into multiple tasks based on their complexities and parallelism. Benchmark testing is conducted for comparing performance and resource efficiency. Finally, it is easy to generalize this superworkflow concept to other deep learning problems.
Join this info-packed and hands-on workshop where we will cover:
Introduction to Kubernetes & GitOps talk:
We'll cover the most popular path that has brought success to many users already - GitOps as a natural evolution of Kubernetes. We'll give an overview of how you can benefit from Kubernetes and GitOps: greater security, reliability, velocity and more. Importantly, we cover definitions and principles standardized by the CNCF's OpenGitOps group and what it means for you.
Get Started with GitOps:
You'll have GitOps up and running in about 30 mins using our free and open source tools! We'll give a brief vision of where you want to be with those security, reliability, and velocity benefits, and then we'll support you while go through the getting started steps. During the workshop, you'll also experience in action and see demos for:
* an opinionated repo structure to minimize decision fatigue
* disaster recovery using GitOps
* Helm charts example
* Multi-cluster example
* all with free and open source tools mostly in the CNCF (eg. Flux and Helm).
If you have questions before or after the workshop, talk to us at #weave-gitops http://bit.ly/WeaveGitOpsSlack (If you need to invite yourself to the Slack, visit https://slack.weave.works/)
From Hours to Minutes: The Journey of Optimizing Mask-RCNN and BERT Using MXNetEric Haibin Lin
Training large deep learning models like Mask R-CNN and BERT takes lots of time and compute resources. Using MXNet, the Amazon Web Services deep learning framework team has been working with NVIDIA to optimize many different areas to cut the training time from hours to minutes.
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"Fwdays
Here in DS team in WIX we want to help to create stunning sites by applying recent achievement of AI research to production. Since Data Science engineering practices are still not fully shaped we found out that it is crucial to bring the best practices from software engineering - give Data Scientist ability to deliver models fast without loss in quality and computation efficiency to stay competitive in this overhyped market. To achieve this we are developing our own infrastructure for creating pipelines and deploying them to production with minimum (to none) engineer involvement.
This talk will cover initial motivation, solved technical issues and lessons learned while building such ML delivery system.
Website: https://fwdays.com/en/event/data-science-fwdays-2019/review/continuous-delivery-of-ml-pipelines-to-production
Exploring the Real Power of Functional ProgrammingKnoldus Inc.
Functional Programming is getting a lot of attention nowadays. Even every mainstream language is now supporting functional style i.e Java, C++, C# etc. Basically, it is one of the paradigms of writing code where we write less code and do more.
Certification Study Group - Professional ML Engineer Session 3 (Machine Learn...gdgsurrey
Dive into the essentials of ML model development, processes, and techniques to combat underfitting and overfitting, explore distributed training approaches, and understand model explainability. Enhance your skills with practical insights from a seasoned expert.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
How world-class product teams are winning in the AI era by CEO and Founder, P...
Typing Concerns
1. An Aspect-Oriented Approach
to Productivity Improvement
for a Dynamic Language
using Typing Concerns
Chanwit Kaewkasi
School of Computer Science
The University of Manchester
Supervisor: John R. Gurd
Advisor: Chris Kirkham
2. Motivation
● The High Productivity Computer Systems
(HPCS) program
● Productivity
● Aspect-oriented programming (AOP)
● Groovy
C. Kaewkasi 2
3. Motivation – HPCS
● The High Productivity Computer Systems
(HPCS) program.
● A program seeking for systems (languages +
platforms) that can double their productivity for
every 18 months.
● Focuses on both
● The development time, and
● The execution time.
C. Kaewkasi 3
4. Motivation – Productivity
● If compilation time is not concerned:
● If compilation time is concerned:
T(P) is the total time for solving problem P
with a certain programming language.
I(P) is the average development time.
C(P) is the average compilation time.
E(P) is the average execution time.
C. Kaewkasi 4
5. Motivation – Productivity
● Relative productivity between the base
language 0 and the new language L.
● P0 , problem P written in language 0.
● PL, problem P written in language L.
C. Kaewkasi 5
6. Motivation – AOP
● A programming paradigm
● Coping with crosscutting concerns
● Four major models:
● Pointcut-advice
● Inter-type declaration
● Class composition
● Traversal
C. Kaewkasi 6
7. Motivation – AOP (cont'd)
● Join point
● An abstract point in the flow of the execution of a
program.
● Aspect
● A modular unit encapsulating crosscutting concerns.
● Pointcut
● An expression for selecting, i.e. quantifying, join points.
● Advice codes
● A place (e.g., before, after, around) with
actions to perform at a certain join point.
C. Kaewkasi 7
8. Motivation – AOP (cont'd)
● Properties
● Quantification; a language has a feature for
selecting a set of join points with, e.g., an
expression.
● Invasiveness; this property allows execution of
aspect codes at a join point of the base program
without explicit declaration of that point.
C. Kaewkasi 8
9. Motivation – Groovy
● A dynamically typed language
● Type is optional
● Runs on Java Virtual Machines
● A direct migration path for Java
● Resembles the Java's syntax.
● Use the same environment, package system and run-
time.
● Use call site caching to improve performance
● A key place for typing concerns.
● Each call site corresponds to a call join point.
C. Kaewkasi 9
10. Hypothesis
Overall productivity of a computer program
written in a dynamic language, in terms of the
development time, the compilation time and the
execution time, can be improved by applying
a dynamic aspect-oriented typing technique.
C. Kaewkasi 10
11. Thesis questions
● What is the appropriate aspect-oriented technique?
● Ans: Type advice (for Typing concerns)
● How is the aspect-oriented technique used for
improving performance?
● Ans: Quantifying call join points, advising type to them.
When type of these points are obvious, traditional
optimisation can be applied.
● How to determine that the technique does improve
overall productivity?
● Ans: Relative productivity metric.
C. Kaewkasi 11
12. Typing concerns
● A kind of concerns found in dynamic languages
● To be precise, dynamically typed languages.
● Type-related
● Why only dynamic languages?
● Because type is not mandatory in this family of
languages.
● Type is strongly embodied as a part of statically
typed languages.
– Their compilers just won't allow us to separate typing.
C. Kaewkasi 12
15. Join point model of typing concerns
● Join point definition
● Traditional + the join point formation phase
● Identification of join point
● Pointcut-advice
def pointcut = pcall('T.x') & args(i)
● Specifying actions
● Type advice
typing(pointcut) { i >> int }
C. Kaewkasi 15
16. Join point model of typing concerns
● Join point definition
● Traditional + the join point formation phase
● Identification of join point
● Pointcut-advice
def pointcut = pcall('T.x') & args(i)
● Specifying actions
● Type advice
typing(pointcut) { i >> int }
C. Kaewkasi 16
17. Properties
● Quantification
● Inherited from the pointcut-advice model.
● Invasiveness
● Performance improvement is transparent to the
base programs.
C. Kaewkasi 17
18. FGV calculus
● A core object-oriented calculus based on
Featherweight Java.
● Objectives
● To study call site behaviours.
– Modelled invocation through call site objects.
– Leads to invention of type advice, and typing concerns.
● To present a proof of performance improvement.
– A dynamic call can be always replaced by a type advised
call, which is faster.
C. Kaewkasi 18
23. Theorem
Type advised call theorem:
A dynamic call (new C(e)).m(d) can be replaced
by a typed advised call C'.m'(new C(e), d) with a
smaller steps of reduction, for some class C and some
type advised class C'.
C. Kaewkasi 23
24. Theorem
Type advised call theorem:
A dynamic call (new C(e)).m(d) can be replaced
by a typed advised call C'.m'(new C(e), d) with a
smaller steps of reduction, for some class C and some
type advised class C'.
A dynamic call dispatched
through its call site object.
A class-level call dispatched directly.
In the implementation,
this class is run-time generated.
C. Kaewkasi 24
25. Reduction steps – Why faster?
● Dynamic call
(when the type advised class does not exist)
● R-Call → R-Invk → R-Field → R-Exec
● Dynamic call via call site replacement
(when the typed advised class exists)
● R-Call → R-Invk → R-Field → R-Repl
● Type advised call
● R-Sinvk
C. Kaewkasi 25
26. Reduction steps – Why faster?
● Dynamic call
(when the type advised class does not exist)
● R-Call → R-Invk → R-Field → R-Exec
● Dynamic call via call site replacement
(when the typed advised class exists)
● R-Call → R-Invk → R-Field → R-Repl
● Type advised call Replaceable
● R-Sinvk
C. Kaewkasi 26
27. Groovy AOP
● Pointcut-advice implementation
● Join point
● Aspect
● Pointcut
● Advice (before, after, and around)
● Type advice implementation
● Advice (typing)
C. Kaewkasi 27
28. Type Advice Engine
● Using Groovy AOP for matching join points
● If matched
● Generate a type advised class for the current
matched join point.
● Optimise the generated type advised class.
● Replace the current call join point, i.e. the current
call site, with the type advised call.
● Load the type advised class into the class loader.
● Re-define the current class via JVMTI.
● Wait and the program will be faster.
C. Kaewkasi 28
29. Relative productivity
● Compare between Java and Groovy with typing
concerns (GT).
C. Kaewkasi 29
30. Relative productivity (cont'd)
● Relative power is assumed to be 1 because
● The syntax of Groovy resembles that of Java.
● Its development environment, package, run-time
systems are the same.
● Only relative compilation and relative efficiency are
measured.
C. Kaewkasi 30
31. Benchmarks
● Fibonacci
● Heap sort
● Sieve (prime number computation)
● Fannkuch (pancake flipping)
● Running on
● Core2 Duo 3.0 GHz, Linux 2.6, JDK 1.6.0_b14
● P4 2.6 GHz, Windows 2000, JDK 1.6.0_b16
● Both running client and server JVM configurations
C. Kaewkasi 31
32. Compilation time measurement
● For Java
● Timing around com.sun.tools.javac.Main
● Benchmarks only.
● For Groovy with typing concerns
● Timing around Groovy's interactive tool
● Benchmarks and their typing aspects.
C. Kaewkasi 32
34. Execution time measurement
● Both for Java and Groovy with typing concerns
● Run each benchmarks
● Measurement are divided into two parts, start-up
time and steady state.
C. Kaewkasi 34
53. Conclusion
● This thesis has introduced a new kind of type-
related aspect techniques, typing concerns.
● A technique of advising type information to a
certain join point is called type advice.
● This technique has been demonstrated to
improve performance of a dynamic language,
Groovy. While the technique still preserves its
productivity.
C. Kaewkasi 53
54. Other contributions
● Type Advice Engine
● A bytecode transformation module for advising type.
● Groovy AOP
● A dynamic AOP implementation.
● FGV calculus
● A core calculus language for studying call site
behaviour.
● The term relative compilation to relative
productivity metrics
C. Kaewkasi 54
55. Future work
● Generalisation of typing concerns to statically
typed languages?
● Implementation of Type Advice Engine:
● into virtual machines.
● near the level of virtual machines.
● Combination of typing and parallelisation
concerns?
● Further study of appropriate relative productivity
metrics for virtual machines.
C. Kaewkasi 55
56. Thank you
● Please feel free to ask questions.
C. Kaewkasi 56