SlideShare a Scribd company logo
1 of 36
Fast, Faster and Super-Fast Queries
     István Ráth                Edward Willink
     @istvanrath
                          Eclipse MMT co-lead
 EMF-IncQuery lead
                            Eclipse OCL lead
 VIATRA2 committer
                           Eclipse QVTd lead
Budapest University of   Eclipse QVTo committer
  Technology and         OMG OCL 2.4 RTF chair
    Economics            OMG QVT 1.2 RTF rep
                          OMG UML 2.5 FTF rep
        EclipseCon Europe, Ludwigsburg
               23rd October 2012

                           Made available under EPL 1.0
Overview
Queries and Technologies
Fast OCL queries
  OCL to Java code generation
Faster OCL queries
  OCL Virtual Machine
Super-fast queries
  faster than Java
  optimized re-evaluation
Summary
      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   2
Example
      Query
   Ecore metamodel
   Ecore model
   Query
       result derived by computation on model
class Library {
  List<Pair<Book, Member>> overdueReport(Date today) {
    List<Pair<Book, Member>> results = new ArrayList<Pair<Book, Member>>();
    for (Loan loan : library.getLoans()) {
      if (loan.getDate() < today) {
        results.add(new Pair<Book, Member>(loan.getBook(), loan.getMember());
      }
    }
    return results;
  }
}

   EMF Java to produce overdue Book+Member report
             Fast, Faster, Super-Fast Queries   Made available under EPL 1.0    3
Query Technologies
                  Increased abstraction/portability
Technology       Data model Query language                       Expressive power        Execution
SQL              RDBMS           SQL                            Tuple relational         Compiler
                                                                calculus
XML/XPath        XML             Xpath expression               Tree path                Interpreter
                 documents       language                       expressions
SPARQL           RDF             Graph pattern based      Tuple relational               Interpreter,
                                 logical queries (SPARQL) calculus                       compiler
OCL              EMF,...         OCL Expression                 Powerful functional      Interpreter,
(active)                                                        language                   compiler
EMF Query        EMF             SQL-like                       Simple queries           Interpreter
(mature)                                                        (subset of SQL)
EMF Query2       EMF             SQL-like                       Simple queries           Interpreter
(incubation)                                                    (subset of SQL)          with index
EMF-IncQuery EMF,...             Graph pattern based            Tuple relational         Interpreter,
(incubation)                     logical queries (IQPL)         calculus + extras          compiler
                                                                (comparable to OCL)
Xtend (active)   EMF             Xbase Expression               Extended Java            Compiler

                 Fast, Faster, Super-Fast Queries         Made available under EPL 1.0                  4
Batch Evaluation Time vs Model Size

                                                In order of increasing performance:
  Model query performance
                                                          - SPARQL tools
       evaluation by
                                               - hand-optimized in-memory MySQL
     model validation
                                            - top Eclipse tools (OCL, EMF-IncQuery)
                                                    - hand-optimized EMF/Java




           One order of magnitude (10x)




         Fast, Faster, Super-Fast Queries   Made available under EPL 1.0              5
Complete OCL

Complementary document
  extra operations/properties/invariants
  existing meta-model unaware of the complements
Pre-Indigo: no OCL editing support
  Java API for many years
  only useable in custom applications
Indigo: Xtext editor
Juno: Load Complete OCL Resource...
  Xtext/Ecore/UML can be complemented
      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   6
Embedded OCL


Pre-Helios: no OCL editing support
  manual XML editing of CDATA and EAnnotations
Helios: Xtext OCLinEcore editor
  automates EMF Delegate EAnnotations entry
  OCL source embedded in EMF's Java
    automatically executed by OCL interpreter
Juno: OCL to Java code generator
    automatically executed by EMF genmodel
      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   7
Fast OCL execution
@Generated NOT manual Java (pre-Helios)
 Ecore Model          genmodel          Java File/Class                        run
                                       @generated NOT


EMF Delegates support EAnnotations (Helios)
 Ecore Model                             Java File/Class

 EAnnotation
                      genmodel               some_ocl              run          parse   interpret
  some_ocl


Direct OCL 2 Java (Juno)
 Ecore Model                             Java File/Class           Java File/Class
                                             (Impl)                 (OCL bodies)
 EAnnotation                                                                            run
                      genmodel                              call
  some_ocl

               Fast, Faster, Super-Fast Queries         Made available under EPL 1.0                8
Useable OCL
Step 1, Add OCL to Ecore




Step 2, optionally enable Code Generation
    Window->Preferences->OCL




Step 3, Generate Models
     Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   9
Fast OCL Execution Support
Fast Control
  Acceleo templates tree-walk at compile-time
Fast Values with OCL semantics
    1 is always equal to 1.0 (Java: only sometimes equal)
    unlimited integers (Java: unchecked 32/64 bit wraparound)
  Polymorphic Values
Fast Operations and Properties
  Polymorphic feature implementation API
Fast Reflection, Metamodel access
  auto-generated dispatch table view of metamodel
      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   10
The Eclipse OCL VM




Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   11
Is the OCL VM Faster?
Fast Control, Values, Operations, Reflection
Juno Code Generator performance
  no run-time parsing costs - good
  subsequent speed similar - really disappointing
Investigation
  eGet("XXX") costly
    code generate as getXXX saves 30%!
  fully polymorphic values are very costly
    every collection is copied
    every collection element is wrapped by a 'box' object

      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   12
Smart Code Generation => Faster
Kepler M3 is 3 to 29 times faster than Juno
  Partial value polymorphism
     EMF collections used directly
     only Integer, Real and EClass objects wrapped/boxed
  static analysis eliminates instanceof costs
     redundant polymorphic dispatch eliminated
Still To Do
     deeper analysis of invalid/null
     operation inlining, CSE, ...



      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   13
Faster, Extensible OCL Evaluation
OCL evaluation is just a tree walk over the AST
  interpreter visits tree nodes directly at run time
  compiler pre-visits tree nodes at compile time
Extended languages add extra AST classes
  extra visitor methods
  same evaluation process
  same debugging requirements
OMG extended languages
  QVTc, QVTo, QVTr, MOFM2T (Acceleo)

      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   14
Real systems
Simple systems - full evaluate once
  just need efficient evaluation
Real systems
  evaluate [small-change re-evaluate]*

Naive Java full re-evaluation costly
     e.g. Xtext substantially reconstructs intermediates
     reliable hand-coded incremental update error-prone
Intelligent re-evaluation is selective
     "Only recalculate what is necessary, reuse the rest"

      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   15
Benchmarking
Goal: to assess query performance of EMF-based tools
Methodology
   Use small (<1000 EObjects), medium (10-100k EObjects) and very large
   instance models (up to 2.8M EObjects)
   Queries of varying complexity
Benchmarking loop (measure memory usage throughout)
   Load model (measure model initialization time)
                                                                   Batch validation
   Evaluate queries (measure evaluation time)
   Modify model (measure modification time)                   (Incremental) revalidation
   Re-evaluate queries (measure re-evaluation time)




         Fast, Faster, Super-Fast Queries   Made available under EPL 1.0                   16
Batch Validation Reprise
●OCL performance
 significantly impacted by
 query specification (.allInstances)
●Same effect for „naive“ Java code




                                                                  Top Eclipse tools
                                                                  (OCL, EMF-IncQuery)
                                                                  within close range of
                                                                  hand-optimized EMF/Java




           Fast, Faster, Super-Fast Queries   Made available under EPL 1.0             17
Surprise (?): Re-validation



                                                                 ● OCL+IA and EMF-IncQuery
                                                                  are characteristically faster
                                                                  than hand-optimized EMF/Java
                                                                 ● Both provide nearly constant

                                                                 re-evaluation performance


● IA can improve                 One order of magnitude (10x)
OCL performance for revalidation
● EMF-IncQuery 10x-100x

faster than IA




                Fast, Faster, Super-Fast Queries   Made available under EPL 1.0             18
The reason: the power of
      declarative approaches
Java: imperative expressions with side effects
    Code difficult/impossible to analyze
Declarative languages: side-effect free
expressions
    programs can be analyzed to optimize change
    processing
    supports efficient re-evaluation: only re-evaluate those
    areas affected by changed input
Approaches
    OCL Impact Analyzer
    EMF-IncQuery


      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   19
EMF-IncQuery: Pattern queries
OCL expressions: Model-based evaluations
    Constraint - returns true/false
    Query - returns one or more values/objects
IncQuery Patterns: Additional Abstraction
    Query - returns a tuple of matching objects
    (Constraint – an annotated query)
  objects in source model
    constrained by instance type
    constrained by inter-relationships
    constrained by arbitrary subqueries
       attribute constraints as restricted/side-effect free Xbase expressions

       Fast, Faster, Super-Fast Queries   Made available under EPL 1.0          20
Pattern example
  pattern OverdueBooks(P: Member, B:Book, Today: Date)
  {
      Loan(L); // declaration optional due to type inference
      Loan.book(L,B);
      Loan.member(L,P);
      Loan.date(L,D);
      check(Today.after(D));          Incremental example 2
  }                                       ●   today becomes tomorrow
                                               ● all comparisons previously returning true re-evaluate

          Incremental example                  ● some OverdueBooks matches change
● a book is renewed
                                               ● < full-revaluation
   ● one due date changes

   ● one OverdueBooks match changes

   ● << full-re-evaluation




                                   B                             L                         P
                Fast, Faster, Super-Fast Queries          Made available under EPL 1.0              21
EMF-IncQuery
Coming very soon to Eclipse Modeling, get it from the
Marketplace today
Features available today
   Fully featured Xtext2-based developer tools
   Integration options
       Generic/generated API: both query results and
       incremental deltas
       Query-based derived EReferences/EAttributes with
       notification support
       Databinding support
   Interactive Query Explorer to provide live views of models,
   works with any EMF-based tool
Near future
   Zest visualization support
   Full UML support (Dynamic EMF)
        Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   23
Super-fast queries
Today in Juno
  OCL+IA can reduce re-evaluation times
  EMF-IncQuery
    Provides top performance regardless of model size and
    query complexity (much faster than OCL+IA and
    handwritten Java)
    At the cost of somewhat increased memory consumption
Future
  Synergies between EMF-IncQuery and OCL(+IA)
  Common framework for query-based features


      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   24
Super-fast queries
Today in Juno
   OCL+IA can reduce re-evaluation times
   EMF-IncQuery
    Provides top performance regardless of model size and
    query complexity (much faster than OCL+IA and
    handwritten Java)
    At the cost of increased memory consumption
                        To see EMF-IncQuery in live action
Future                   doing realtime gesture recognition,
                             check out Jonas Helming's
  Synergies between EMF-IncQuery and OCL(+IA)
                            Jnect Session on Thursday:

                                   Jnect – Get Your Eclipse Moving
                                   (Thursday 2.30PM-3PM, Theater)

       Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   25
Summary
Fast
  direct OCL to Java code generation
Faster
  efficient OCL Virtual Machine dispatch tables
  ongoing optimizations
Super-fast
  declarative (re-)evaluation can be optimized with
  EMF-IncQuery and OCL+IA
  much faster than (naive/typical) Java!

       Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   26
Unused slides




Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   27
Xcore and friends / OCL
If all you want is Java
  use Xcore/Xbase not OCL
OCL is a Specification language -
  platform neutral
Sharper syntax
  much of it adopted by Xbase
Declarative
  side effect free, no assignment
Foundation for MOFM2T(Acceleo), QVT, ...
      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   28
OCL Code Generator
Acceleo templates
  flexible, extensible
  eliminates run-time parsing costs
Run-time speed not significantly faster
  polymorphic, accurate, UML-aligned
Juno 2012, pivot-based code generator
  Acceleo OCL to Java templates
  eliminates run-time compilation
    not significantly faster

      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   29
OCL Evaluation Principles
                                                                             root


AST Tree walk                                                          if

  root to if to ...                                      condition          then    else
                                              referred        a
AST node per usage                        a   Variable      (ref)
                                                                       1            0


  IfExp                                   if a then 1 else 0 endif
  VariableExp
  IntegerLiteralExp
Extensible
  Polymorphic AST nodes
  auto-generated Visitor (faster than Ecore Switch)

       Fast, Faster, Super-Fast Queries       Made available under EPL 1.0                 30
'Ecore' Operation Call : a.b(c,d)




Tree search over type and supertypes --- a
  Linear search for operation name                                  --- b
    Linear search to match argument types                           --- (c,d)
        Tree search for conformant type/supertype                   --- c then d
Select best unique match
      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0              31
'OCL VM' Operation Call




Fragment provides derived view of base
  may have overloaded entries


Linear search of fragments at required depth
  Direct index to operation

      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   32
Example OCL VM dispatch
                                                                     Problem
                                                                          fa1() for a C
                                                                     Compile-time
                                                                          A::fa1
                                                                          depth 0, index 1
                                                                     Run-time
                                                                          C
                                                                          A is depth 0
                                                                             A for C
let c : C in c.fa1()                                                      A::fa1 is index 1
                                                                                  C::fa1
                Fast, Faster, Super-Fast Queries   Made available under EPL 1.0            33
OCL Virtual Machine => Faster
Non-polymorphic values bad
[org.eclipse.ocl.ecore since at least Europa]
      Boolean, String, Integer ...
      difficult/impossible to have precise OCL semantics
Fully polymorphic values bad
[org.eclipse.ocl.examples.pivot since Indigo]
      BooleanValue, StringValue, IntegerValue ...
   too many boxing/wrapping objects
Partially polymorphic values also bad
      Boolean, String but IntegerValue ...
   too many instanceof tests
        Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   34
Simple Interpreted OCL VM
Program is an Abstract Syntax Graph (AST)
  VariableExp
    references variable to read as a value
  PropertyCallExp
    references object and property to read as a value
  OperationCallExp
    references operation to apply to some values
Run-time Interpretation
  tree-walking evaluation visitor
Extensible with new AST node classes
      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   35
Code Generated OCL VM
Program is an Abstract Syntax Graph (AST)
Compile-Time Code Generation
  tree-walking code generating visitor
Run-time Execution
  direct Java, direct model accesses
Extensible with new AST node classes
Optimisable
  direct model access getXX() rather than eGet('XX')
  inlining of non-polymorphic (final) operations

      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   36
(Imperative) OCL VM for QVT

Simple OCL VM
  AST walker
  QVT richer AST

Code generated VM
  dispatch tables
  flattened code
  inlined operations

Debugging tools
      Fast, Faster, Super-Fast Queries   Made available under EPL 1.0   37

More Related Content

What's hot

EMF-IncQuery 0.7 Presentation for Itemis
EMF-IncQuery 0.7 Presentation for ItemisEMF-IncQuery 0.7 Presentation for Itemis
EMF-IncQuery 0.7 Presentation for ItemisIstvan Rath
 
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIsCS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIsKwangshin Oh
 
Aspect-Oriented Programming
Aspect-Oriented ProgrammingAspect-Oriented Programming
Aspect-Oriented ProgrammingAndrey Bratukhin
 
Core Java introduction | Basics | free course
Core Java introduction | Basics | free course Core Java introduction | Basics | free course
Core Java introduction | Basics | free course Kernel Training
 
Java 101 intro to programming with java
Java 101  intro to programming with javaJava 101  intro to programming with java
Java 101 intro to programming with javaHawkman Academy
 
Introduction to PSPICE
Introduction to PSPICEIntroduction to PSPICE
Introduction to PSPICEsyella
 
Weaving aspects in PHP with the help of Go! AOP library
Weaving aspects in PHP with the help of Go! AOP libraryWeaving aspects in PHP with the help of Go! AOP library
Weaving aspects in PHP with the help of Go! AOP libraryAlexander Lisachenko
 
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Nayden Gochev
 
Software Uni Conf October 2014
Software Uni Conf October 2014Software Uni Conf October 2014
Software Uni Conf October 2014Nayden Gochev
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to javaSteve Fort
 
Java history, versions, types of errors and exception, quiz
Java history, versions, types of errors and exception, quiz Java history, versions, types of errors and exception, quiz
Java history, versions, types of errors and exception, quiz SAurabh PRajapati
 
SoftwareUniversity seminar fast REST Api with Spring
SoftwareUniversity seminar fast REST Api with SpringSoftwareUniversity seminar fast REST Api with Spring
SoftwareUniversity seminar fast REST Api with SpringNayden Gochev
 
Functional Programming In Jdk8
Functional Programming In Jdk8 Functional Programming In Jdk8
Functional Programming In Jdk8 Bansilal Haudakari
 
Erlang - Concurrent Language for Concurrent World
Erlang - Concurrent Language for Concurrent WorldErlang - Concurrent Language for Concurrent World
Erlang - Concurrent Language for Concurrent WorldZvi Avraham
 
Basic Java Programming
Basic Java ProgrammingBasic Java Programming
Basic Java ProgrammingMath-Circle
 
Introduction to java 101
Introduction to java 101Introduction to java 101
Introduction to java 101kankemwa Ishaku
 

What's hot (20)

EMF-IncQuery 0.7 Presentation for Itemis
EMF-IncQuery 0.7 Presentation for ItemisEMF-IncQuery 0.7 Presentation for Itemis
EMF-IncQuery 0.7 Presentation for Itemis
 
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIsCS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
 
Aspect-Oriented Programming
Aspect-Oriented ProgrammingAspect-Oriented Programming
Aspect-Oriented Programming
 
Introduction to java programming part 2
Introduction to java programming  part 2Introduction to java programming  part 2
Introduction to java programming part 2
 
Core Java introduction | Basics | free course
Core Java introduction | Basics | free course Core Java introduction | Basics | free course
Core Java introduction | Basics | free course
 
Java 101 intro to programming with java
Java 101  intro to programming with javaJava 101  intro to programming with java
Java 101 intro to programming with java
 
Introduction to PSPICE
Introduction to PSPICEIntroduction to PSPICE
Introduction to PSPICE
 
Weaving aspects in PHP with the help of Go! AOP library
Weaving aspects in PHP with the help of Go! AOP libraryWeaving aspects in PHP with the help of Go! AOP library
Weaving aspects in PHP with the help of Go! AOP library
 
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
 
Software Uni Conf October 2014
Software Uni Conf October 2014Software Uni Conf October 2014
Software Uni Conf October 2014
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 
Java history, versions, types of errors and exception, quiz
Java history, versions, types of errors and exception, quiz Java history, versions, types of errors and exception, quiz
Java history, versions, types of errors and exception, quiz
 
Sc11 presentation 2001_06_28
Sc11 presentation 2001_06_28Sc11 presentation 2001_06_28
Sc11 presentation 2001_06_28
 
Java &amp; advanced java
Java &amp; advanced javaJava &amp; advanced java
Java &amp; advanced java
 
SoftwareUniversity seminar fast REST Api with Spring
SoftwareUniversity seminar fast REST Api with SpringSoftwareUniversity seminar fast REST Api with Spring
SoftwareUniversity seminar fast REST Api with Spring
 
Functional Programming In Jdk8
Functional Programming In Jdk8 Functional Programming In Jdk8
Functional Programming In Jdk8
 
Erlang - Concurrent Language for Concurrent World
Erlang - Concurrent Language for Concurrent WorldErlang - Concurrent Language for Concurrent World
Erlang - Concurrent Language for Concurrent World
 
Basic Java Programming
Basic Java ProgrammingBasic Java Programming
Basic Java Programming
 
Erlang OTP
Erlang OTPErlang OTP
Erlang OTP
 
Introduction to java 101
Introduction to java 101Introduction to java 101
Introduction to java 101
 

Viewers also liked

النشاط العلمي - الكهرباء
النشاط العلمي  -   الكهرباءالنشاط العلمي  -   الكهرباء
النشاط العلمي - الكهرباءErradi Mohamed
 
Timing verification of automotive communication architecture using quantile ...
Timing verification of automotive communication  architecture using quantile ...Timing verification of automotive communication  architecture using quantile ...
Timing verification of automotive communication architecture using quantile ...RealTime-at-Work (RTaW)
 
Modeling the OCL Standard Library
Modeling the OCL Standard LibraryModeling the OCL Standard Library
Modeling the OCL Standard LibraryEdward Willink
 
erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris. erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris. OCCIware
 
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Edward Willink
 
OCL Integration and Code Generation
OCL Integration and Code GenerationOCL Integration and Code Generation
OCL Integration and Code GenerationEdward Willink
 
The Importance of Opposites
The Importance of OppositesThe Importance of Opposites
The Importance of OppositesEdward Willink
 
Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Erradi Mohamed
 
Developpement mobile vs open source
Developpement mobile vs open sourceDeveloppement mobile vs open source
Developpement mobile vs open sourceKorteby Farouk
 
OCCIware Contribution to the EU consultation on Cloud Computing Research Inno...
OCCIware Contribution to the EU consultation on Cloud Computing Research Inno...OCCIware Contribution to the EU consultation on Cloud Computing Research Inno...
OCCIware Contribution to the EU consultation on Cloud Computing Research Inno...OCCIware
 
Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0Pascal Roques
 
Vbisigk
VbisigkVbisigk
VbisigkISIG
 
Be serious with sirius your journey from first experimentation to large deplo...
Be serious with sirius your journey from first experimentation to large deplo...Be serious with sirius your journey from first experimentation to large deplo...
Be serious with sirius your journey from first experimentation to large deplo...Etienne Juliot
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governancebharati k
 
Optimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc resultsOptimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc resultsEdward Willink
 
Design Thinking Assignment
Design Thinking AssignmentDesign Thinking Assignment
Design Thinking AssignmentSalma ES-Salmani
 
Embedded OCL Integration and Debugging
Embedded OCL Integration and DebuggingEmbedded OCL Integration and Debugging
Embedded OCL Integration and DebuggingEdward Willink
 

Viewers also liked (20)

النشاط العلمي - الكهرباء
النشاط العلمي  -   الكهرباءالنشاط العلمي  -   الكهرباء
النشاط العلمي - الكهرباء
 
Timing verification of automotive communication architecture using quantile ...
Timing verification of automotive communication  architecture using quantile ...Timing verification of automotive communication  architecture using quantile ...
Timing verification of automotive communication architecture using quantile ...
 
Modeling the OCL Standard Library
Modeling the OCL Standard LibraryModeling the OCL Standard Library
Modeling the OCL Standard Library
 
erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris. erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris.
 
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
 
Aligning OCL and UML
Aligning OCL and UMLAligning OCL and UML
Aligning OCL and UML
 
OCL Integration and Code Generation
OCL Integration and Code GenerationOCL Integration and Code Generation
OCL Integration and Code Generation
 
The Importance of Opposites
The Importance of OppositesThe Importance of Opposites
The Importance of Opposites
 
Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire
 
Developpement mobile vs open source
Developpement mobile vs open sourceDeveloppement mobile vs open source
Developpement mobile vs open source
 
OCCIware Contribution to the EU consultation on Cloud Computing Research Inno...
OCCIware Contribution to the EU consultation on Cloud Computing Research Inno...OCCIware Contribution to the EU consultation on Cloud Computing Research Inno...
OCCIware Contribution to the EU consultation on Cloud Computing Research Inno...
 
Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0Prfc rhapsody simulation_1.0
Prfc rhapsody simulation_1.0
 
Vbisigk
VbisigkVbisigk
Vbisigk
 
Be serious with sirius your journey from first experimentation to large deplo...
Be serious with sirius your journey from first experimentation to large deplo...Be serious with sirius your journey from first experimentation to large deplo...
Be serious with sirius your journey from first experimentation to large deplo...
 
Cvl
CvlCvl
Cvl
 
Mix
MixMix
Mix
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governance
 
Optimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc resultsOptimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc results
 
Design Thinking Assignment
Design Thinking AssignmentDesign Thinking Assignment
Design Thinking Assignment
 
Embedded OCL Integration and Debugging
Embedded OCL Integration and DebuggingEmbedded OCL Integration and Debugging
Embedded OCL Integration and Debugging
 

Similar to Fast, Faster and Super-Fast Queries

Enrich Your Models With OCL
Enrich Your Models With OCLEnrich Your Models With OCL
Enrich Your Models With OCLEdward Willink
 
Xcore meets IncQuery: How the New Generation of DSLs are Made
Xcore meets IncQuery: How the New Generation of DSLs are MadeXcore meets IncQuery: How the New Generation of DSLs are Made
Xcore meets IncQuery: How the New Generation of DSLs are MadeIstvan Rath
 
ACS 248th Paper 136 JSmol/JSpecView Eureka Integration
ACS 248th Paper 136 JSmol/JSpecView Eureka IntegrationACS 248th Paper 136 JSmol/JSpecView Eureka Integration
ACS 248th Paper 136 JSmol/JSpecView Eureka IntegrationStuart Chalk
 
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Dimitris Kolovos
 
Clojure beasts-euroclj-2014
Clojure beasts-euroclj-2014Clojure beasts-euroclj-2014
Clojure beasts-euroclj-2014Renzo Borgatti
 
Database & Technology 1 _ Craig Shallahamer _ Unit of work time based perform...
Database & Technology 1 _ Craig Shallahamer _ Unit of work time based perform...Database & Technology 1 _ Craig Shallahamer _ Unit of work time based perform...
Database & Technology 1 _ Craig Shallahamer _ Unit of work time based perform...InSync2011
 
Lesson03 学会使用单行函数
Lesson03 学会使用单行函数Lesson03 学会使用单行函数
Lesson03 学会使用单行函数renguzi
 
The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論scalaconfjp
 
EcoreTools-Next: Executable DSL made (more) accessible
EcoreTools-Next: Executable DSL made (more) accessibleEcoreTools-Next: Executable DSL made (more) accessible
EcoreTools-Next: Executable DSL made (more) accessibleCédric Brun
 
EclipseCon 2006: Introduction to the Eclipse Modeling Framework
EclipseCon 2006: Introduction to the Eclipse Modeling FrameworkEclipseCon 2006: Introduction to the Eclipse Modeling Framework
EclipseCon 2006: Introduction to the Eclipse Modeling FrameworkDave Steinberg
 
Building Concurrent WebObjects applications with Scala
Building Concurrent WebObjects applications with ScalaBuilding Concurrent WebObjects applications with Scala
Building Concurrent WebObjects applications with ScalaWO Community
 
Database & Technology 1 _ Craig Shallahamer _ SQL Elapsed Time Analhysis.pdf
Database & Technology 1 _ Craig Shallahamer _ SQL Elapsed Time Analhysis.pdfDatabase & Technology 1 _ Craig Shallahamer _ SQL Elapsed Time Analhysis.pdf
Database & Technology 1 _ Craig Shallahamer _ SQL Elapsed Time Analhysis.pdfInSync2011
 
Re-implementing Thrift using MDE
Re-implementing Thrift using MDERe-implementing Thrift using MDE
Re-implementing Thrift using MDESina Madani
 

Similar to Fast, Faster and Super-Fast Queries (20)

Eclipse OCL Summary
Eclipse OCL SummaryEclipse OCL Summary
Eclipse OCL Summary
 
Enrich Your Models With OCL
Enrich Your Models With OCLEnrich Your Models With OCL
Enrich Your Models With OCL
 
Xcore meets IncQuery: How the New Generation of DSLs are Made
Xcore meets IncQuery: How the New Generation of DSLs are MadeXcore meets IncQuery: How the New Generation of DSLs are Made
Xcore meets IncQuery: How the New Generation of DSLs are Made
 
ACS 248th Paper 136 JSmol/JSpecView Eureka Integration
ACS 248th Paper 136 JSmol/JSpecView Eureka IntegrationACS 248th Paper 136 JSmol/JSpecView Eureka Integration
ACS 248th Paper 136 JSmol/JSpecView Eureka Integration
 
Eclipse RCP 4
Eclipse RCP 4Eclipse RCP 4
Eclipse RCP 4
 
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
 
Clojure beasts-euroclj-2014
Clojure beasts-euroclj-2014Clojure beasts-euroclj-2014
Clojure beasts-euroclj-2014
 
OCL in EMF
OCL in EMFOCL in EMF
OCL in EMF
 
Database & Technology 1 _ Craig Shallahamer _ Unit of work time based perform...
Database & Technology 1 _ Craig Shallahamer _ Unit of work time based perform...Database & Technology 1 _ Craig Shallahamer _ Unit of work time based perform...
Database & Technology 1 _ Craig Shallahamer _ Unit of work time based perform...
 
Elm architecture
Elm architectureElm architecture
Elm architecture
 
Devoxx
DevoxxDevoxx
Devoxx
 
Erlang, an overview
Erlang, an overviewErlang, an overview
Erlang, an overview
 
Lesson03 学会使用单行函数
Lesson03 学会使用单行函数Lesson03 学会使用单行函数
Lesson03 学会使用单行函数
 
The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論The Evolution of Scala / Scala進化論
The Evolution of Scala / Scala進化論
 
EcoreTools-Next: Executable DSL made (more) accessible
EcoreTools-Next: Executable DSL made (more) accessibleEcoreTools-Next: Executable DSL made (more) accessible
EcoreTools-Next: Executable DSL made (more) accessible
 
EclipseCon 2006: Introduction to the Eclipse Modeling Framework
EclipseCon 2006: Introduction to the Eclipse Modeling FrameworkEclipseCon 2006: Introduction to the Eclipse Modeling Framework
EclipseCon 2006: Introduction to the Eclipse Modeling Framework
 
Building Concurrent WebObjects applications with Scala
Building Concurrent WebObjects applications with ScalaBuilding Concurrent WebObjects applications with Scala
Building Concurrent WebObjects applications with Scala
 
Database & Technology 1 _ Craig Shallahamer _ SQL Elapsed Time Analhysis.pdf
Database & Technology 1 _ Craig Shallahamer _ SQL Elapsed Time Analhysis.pdfDatabase & Technology 1 _ Craig Shallahamer _ SQL Elapsed Time Analhysis.pdf
Database & Technology 1 _ Craig Shallahamer _ SQL Elapsed Time Analhysis.pdf
 
CoreML
CoreMLCoreML
CoreML
 
Re-implementing Thrift using MDE
Re-implementing Thrift using MDERe-implementing Thrift using MDE
Re-implementing Thrift using MDE
 

More from Edward Willink

OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality CheckEdward Willink
 
OCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveOCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveEdward Willink
 
A text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TA text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TEdward Willink
 
Commutative Short Circuit Operators
Commutative Short Circuit OperatorsCommutative Short Circuit Operators
Commutative Short Circuit OperatorsEdward Willink
 
Deterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsDeterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsEdward Willink
 
The Micromapping Model of Computation
The Micromapping Model of ComputationThe Micromapping Model of Computation
The Micromapping Model of ComputationEdward Willink
 
OCL Specification Status
OCL Specification StatusOCL Specification Status
OCL Specification StatusEdward Willink
 
At Last an OCL Debugger
At Last an OCL DebuggerAt Last an OCL Debugger
At Last an OCL DebuggerEdward Willink
 
QVT Traceability: What does it really mean?
QVT Traceability: What does it really mean?QVT Traceability: What does it really mean?
QVT Traceability: What does it really mean?Edward Willink
 
Safe navigation in OCL
Safe navigation in OCLSafe navigation in OCL
Safe navigation in OCLEdward Willink
 
Yet Another Three QVT Languages
Yet Another Three QVT LanguagesYet Another Three QVT Languages
Yet Another Three QVT LanguagesEdward Willink
 
OCL - The Bigger Picture
OCL - The Bigger PictureOCL - The Bigger Picture
OCL - The Bigger PictureEdward Willink
 
Model Transformation A Personal Perspective
Model Transformation A Personal PerspectiveModel Transformation A Personal Perspective
Model Transformation A Personal PerspectiveEdward Willink
 
Re-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for XtextRe-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for XtextEdward Willink
 
Enriching Your Models with OCL
Enriching Your Models with OCLEnriching Your Models with OCL
Enriching Your Models with OCLEdward Willink
 

More from Edward Willink (20)

An OCL Map Type
An OCL Map TypeAn OCL Map Type
An OCL Map Type
 
OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality Check
 
OCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveOCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and Prospective
 
A text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TA text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2T
 
Shadow Objects
Shadow ObjectsShadow Objects
Shadow Objects
 
Commutative Short Circuit Operators
Commutative Short Circuit OperatorsCommutative Short Circuit Operators
Commutative Short Circuit Operators
 
Deterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsDeterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL Collections
 
The Micromapping Model of Computation
The Micromapping Model of ComputationThe Micromapping Model of Computation
The Micromapping Model of Computation
 
OCL Specification Status
OCL Specification StatusOCL Specification Status
OCL Specification Status
 
At Last an OCL Debugger
At Last an OCL DebuggerAt Last an OCL Debugger
At Last an OCL Debugger
 
QVT Traceability: What does it really mean?
QVT Traceability: What does it really mean?QVT Traceability: What does it really mean?
QVT Traceability: What does it really mean?
 
Safe navigation in OCL
Safe navigation in OCLSafe navigation in OCL
Safe navigation in OCL
 
OCL 2.4. (... 2.5)
OCL 2.4. (... 2.5)OCL 2.4. (... 2.5)
OCL 2.4. (... 2.5)
 
OCL 2.5 plans
OCL 2.5 plansOCL 2.5 plans
OCL 2.5 plans
 
Yet Another Three QVT Languages
Yet Another Three QVT LanguagesYet Another Three QVT Languages
Yet Another Three QVT Languages
 
OCL - The Bigger Picture
OCL - The Bigger PictureOCL - The Bigger Picture
OCL - The Bigger Picture
 
UMLX and QVT and ATL
UMLX and QVT and ATLUMLX and QVT and ATL
UMLX and QVT and ATL
 
Model Transformation A Personal Perspective
Model Transformation A Personal PerspectiveModel Transformation A Personal Perspective
Model Transformation A Personal Perspective
 
Re-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for XtextRe-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for Xtext
 
Enriching Your Models with OCL
Enriching Your Models with OCLEnriching Your Models with OCL
Enriching Your Models with OCL
 

Recently uploaded

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Recently uploaded (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

Fast, Faster and Super-Fast Queries

  • 1. Fast, Faster and Super-Fast Queries István Ráth Edward Willink @istvanrath Eclipse MMT co-lead EMF-IncQuery lead Eclipse OCL lead VIATRA2 committer Eclipse QVTd lead Budapest University of Eclipse QVTo committer Technology and OMG OCL 2.4 RTF chair Economics OMG QVT 1.2 RTF rep OMG UML 2.5 FTF rep EclipseCon Europe, Ludwigsburg 23rd October 2012 Made available under EPL 1.0
  • 2. Overview Queries and Technologies Fast OCL queries OCL to Java code generation Faster OCL queries OCL Virtual Machine Super-fast queries faster than Java optimized re-evaluation Summary Fast, Faster, Super-Fast Queries Made available under EPL 1.0 2
  • 3. Example Query Ecore metamodel Ecore model Query result derived by computation on model class Library { List<Pair<Book, Member>> overdueReport(Date today) { List<Pair<Book, Member>> results = new ArrayList<Pair<Book, Member>>(); for (Loan loan : library.getLoans()) { if (loan.getDate() < today) { results.add(new Pair<Book, Member>(loan.getBook(), loan.getMember()); } } return results; } } EMF Java to produce overdue Book+Member report Fast, Faster, Super-Fast Queries Made available under EPL 1.0 3
  • 4. Query Technologies Increased abstraction/portability Technology Data model Query language Expressive power Execution SQL RDBMS SQL Tuple relational Compiler calculus XML/XPath XML Xpath expression Tree path Interpreter documents language expressions SPARQL RDF Graph pattern based Tuple relational Interpreter, logical queries (SPARQL) calculus compiler OCL EMF,... OCL Expression Powerful functional Interpreter, (active) language compiler EMF Query EMF SQL-like Simple queries Interpreter (mature) (subset of SQL) EMF Query2 EMF SQL-like Simple queries Interpreter (incubation) (subset of SQL) with index EMF-IncQuery EMF,... Graph pattern based Tuple relational Interpreter, (incubation) logical queries (IQPL) calculus + extras compiler (comparable to OCL) Xtend (active) EMF Xbase Expression Extended Java Compiler Fast, Faster, Super-Fast Queries Made available under EPL 1.0 4
  • 5. Batch Evaluation Time vs Model Size In order of increasing performance: Model query performance - SPARQL tools evaluation by - hand-optimized in-memory MySQL model validation - top Eclipse tools (OCL, EMF-IncQuery) - hand-optimized EMF/Java One order of magnitude (10x) Fast, Faster, Super-Fast Queries Made available under EPL 1.0 5
  • 6. Complete OCL Complementary document extra operations/properties/invariants existing meta-model unaware of the complements Pre-Indigo: no OCL editing support Java API for many years only useable in custom applications Indigo: Xtext editor Juno: Load Complete OCL Resource... Xtext/Ecore/UML can be complemented Fast, Faster, Super-Fast Queries Made available under EPL 1.0 6
  • 7. Embedded OCL Pre-Helios: no OCL editing support manual XML editing of CDATA and EAnnotations Helios: Xtext OCLinEcore editor automates EMF Delegate EAnnotations entry OCL source embedded in EMF's Java automatically executed by OCL interpreter Juno: OCL to Java code generator automatically executed by EMF genmodel Fast, Faster, Super-Fast Queries Made available under EPL 1.0 7
  • 8. Fast OCL execution @Generated NOT manual Java (pre-Helios) Ecore Model genmodel Java File/Class run @generated NOT EMF Delegates support EAnnotations (Helios) Ecore Model Java File/Class EAnnotation genmodel some_ocl run parse interpret some_ocl Direct OCL 2 Java (Juno) Ecore Model Java File/Class Java File/Class (Impl) (OCL bodies) EAnnotation run genmodel call some_ocl Fast, Faster, Super-Fast Queries Made available under EPL 1.0 8
  • 9. Useable OCL Step 1, Add OCL to Ecore Step 2, optionally enable Code Generation Window->Preferences->OCL Step 3, Generate Models Fast, Faster, Super-Fast Queries Made available under EPL 1.0 9
  • 10. Fast OCL Execution Support Fast Control Acceleo templates tree-walk at compile-time Fast Values with OCL semantics 1 is always equal to 1.0 (Java: only sometimes equal) unlimited integers (Java: unchecked 32/64 bit wraparound) Polymorphic Values Fast Operations and Properties Polymorphic feature implementation API Fast Reflection, Metamodel access auto-generated dispatch table view of metamodel Fast, Faster, Super-Fast Queries Made available under EPL 1.0 10
  • 11. The Eclipse OCL VM Fast, Faster, Super-Fast Queries Made available under EPL 1.0 11
  • 12. Is the OCL VM Faster? Fast Control, Values, Operations, Reflection Juno Code Generator performance no run-time parsing costs - good subsequent speed similar - really disappointing Investigation eGet("XXX") costly code generate as getXXX saves 30%! fully polymorphic values are very costly every collection is copied every collection element is wrapped by a 'box' object Fast, Faster, Super-Fast Queries Made available under EPL 1.0 12
  • 13. Smart Code Generation => Faster Kepler M3 is 3 to 29 times faster than Juno Partial value polymorphism EMF collections used directly only Integer, Real and EClass objects wrapped/boxed static analysis eliminates instanceof costs redundant polymorphic dispatch eliminated Still To Do deeper analysis of invalid/null operation inlining, CSE, ... Fast, Faster, Super-Fast Queries Made available under EPL 1.0 13
  • 14. Faster, Extensible OCL Evaluation OCL evaluation is just a tree walk over the AST interpreter visits tree nodes directly at run time compiler pre-visits tree nodes at compile time Extended languages add extra AST classes extra visitor methods same evaluation process same debugging requirements OMG extended languages QVTc, QVTo, QVTr, MOFM2T (Acceleo) Fast, Faster, Super-Fast Queries Made available under EPL 1.0 14
  • 15. Real systems Simple systems - full evaluate once just need efficient evaluation Real systems evaluate [small-change re-evaluate]* Naive Java full re-evaluation costly e.g. Xtext substantially reconstructs intermediates reliable hand-coded incremental update error-prone Intelligent re-evaluation is selective "Only recalculate what is necessary, reuse the rest" Fast, Faster, Super-Fast Queries Made available under EPL 1.0 15
  • 16. Benchmarking Goal: to assess query performance of EMF-based tools Methodology Use small (<1000 EObjects), medium (10-100k EObjects) and very large instance models (up to 2.8M EObjects) Queries of varying complexity Benchmarking loop (measure memory usage throughout) Load model (measure model initialization time) Batch validation Evaluate queries (measure evaluation time) Modify model (measure modification time) (Incremental) revalidation Re-evaluate queries (measure re-evaluation time) Fast, Faster, Super-Fast Queries Made available under EPL 1.0 16
  • 17. Batch Validation Reprise ●OCL performance significantly impacted by query specification (.allInstances) ●Same effect for „naive“ Java code Top Eclipse tools (OCL, EMF-IncQuery) within close range of hand-optimized EMF/Java Fast, Faster, Super-Fast Queries Made available under EPL 1.0 17
  • 18. Surprise (?): Re-validation ● OCL+IA and EMF-IncQuery are characteristically faster than hand-optimized EMF/Java ● Both provide nearly constant re-evaluation performance ● IA can improve One order of magnitude (10x) OCL performance for revalidation ● EMF-IncQuery 10x-100x faster than IA Fast, Faster, Super-Fast Queries Made available under EPL 1.0 18
  • 19. The reason: the power of declarative approaches Java: imperative expressions with side effects Code difficult/impossible to analyze Declarative languages: side-effect free expressions programs can be analyzed to optimize change processing supports efficient re-evaluation: only re-evaluate those areas affected by changed input Approaches OCL Impact Analyzer EMF-IncQuery Fast, Faster, Super-Fast Queries Made available under EPL 1.0 19
  • 20. EMF-IncQuery: Pattern queries OCL expressions: Model-based evaluations Constraint - returns true/false Query - returns one or more values/objects IncQuery Patterns: Additional Abstraction Query - returns a tuple of matching objects (Constraint – an annotated query) objects in source model constrained by instance type constrained by inter-relationships constrained by arbitrary subqueries attribute constraints as restricted/side-effect free Xbase expressions Fast, Faster, Super-Fast Queries Made available under EPL 1.0 20
  • 21. Pattern example pattern OverdueBooks(P: Member, B:Book, Today: Date) { Loan(L); // declaration optional due to type inference Loan.book(L,B); Loan.member(L,P); Loan.date(L,D); check(Today.after(D)); Incremental example 2 } ● today becomes tomorrow ● all comparisons previously returning true re-evaluate Incremental example ● some OverdueBooks matches change ● a book is renewed ● < full-revaluation ● one due date changes ● one OverdueBooks match changes ● << full-re-evaluation B L P Fast, Faster, Super-Fast Queries Made available under EPL 1.0 21
  • 22. EMF-IncQuery Coming very soon to Eclipse Modeling, get it from the Marketplace today Features available today Fully featured Xtext2-based developer tools Integration options Generic/generated API: both query results and incremental deltas Query-based derived EReferences/EAttributes with notification support Databinding support Interactive Query Explorer to provide live views of models, works with any EMF-based tool Near future Zest visualization support Full UML support (Dynamic EMF) Fast, Faster, Super-Fast Queries Made available under EPL 1.0 23
  • 23. Super-fast queries Today in Juno OCL+IA can reduce re-evaluation times EMF-IncQuery Provides top performance regardless of model size and query complexity (much faster than OCL+IA and handwritten Java) At the cost of somewhat increased memory consumption Future Synergies between EMF-IncQuery and OCL(+IA) Common framework for query-based features Fast, Faster, Super-Fast Queries Made available under EPL 1.0 24
  • 24. Super-fast queries Today in Juno OCL+IA can reduce re-evaluation times EMF-IncQuery Provides top performance regardless of model size and query complexity (much faster than OCL+IA and handwritten Java) At the cost of increased memory consumption To see EMF-IncQuery in live action Future doing realtime gesture recognition, check out Jonas Helming's Synergies between EMF-IncQuery and OCL(+IA) Jnect Session on Thursday: Jnect – Get Your Eclipse Moving (Thursday 2.30PM-3PM, Theater) Fast, Faster, Super-Fast Queries Made available under EPL 1.0 25
  • 25. Summary Fast direct OCL to Java code generation Faster efficient OCL Virtual Machine dispatch tables ongoing optimizations Super-fast declarative (re-)evaluation can be optimized with EMF-IncQuery and OCL+IA much faster than (naive/typical) Java! Fast, Faster, Super-Fast Queries Made available under EPL 1.0 26
  • 26. Unused slides Fast, Faster, Super-Fast Queries Made available under EPL 1.0 27
  • 27. Xcore and friends / OCL If all you want is Java use Xcore/Xbase not OCL OCL is a Specification language - platform neutral Sharper syntax much of it adopted by Xbase Declarative side effect free, no assignment Foundation for MOFM2T(Acceleo), QVT, ... Fast, Faster, Super-Fast Queries Made available under EPL 1.0 28
  • 28. OCL Code Generator Acceleo templates flexible, extensible eliminates run-time parsing costs Run-time speed not significantly faster polymorphic, accurate, UML-aligned Juno 2012, pivot-based code generator Acceleo OCL to Java templates eliminates run-time compilation not significantly faster Fast, Faster, Super-Fast Queries Made available under EPL 1.0 29
  • 29. OCL Evaluation Principles root AST Tree walk if root to if to ... condition then else referred a AST node per usage a Variable (ref) 1 0 IfExp if a then 1 else 0 endif VariableExp IntegerLiteralExp Extensible Polymorphic AST nodes auto-generated Visitor (faster than Ecore Switch) Fast, Faster, Super-Fast Queries Made available under EPL 1.0 30
  • 30. 'Ecore' Operation Call : a.b(c,d) Tree search over type and supertypes --- a Linear search for operation name --- b Linear search to match argument types --- (c,d) Tree search for conformant type/supertype --- c then d Select best unique match Fast, Faster, Super-Fast Queries Made available under EPL 1.0 31
  • 31. 'OCL VM' Operation Call Fragment provides derived view of base may have overloaded entries Linear search of fragments at required depth Direct index to operation Fast, Faster, Super-Fast Queries Made available under EPL 1.0 32
  • 32. Example OCL VM dispatch Problem fa1() for a C Compile-time A::fa1 depth 0, index 1 Run-time C A is depth 0 A for C let c : C in c.fa1() A::fa1 is index 1 C::fa1 Fast, Faster, Super-Fast Queries Made available under EPL 1.0 33
  • 33. OCL Virtual Machine => Faster Non-polymorphic values bad [org.eclipse.ocl.ecore since at least Europa] Boolean, String, Integer ... difficult/impossible to have precise OCL semantics Fully polymorphic values bad [org.eclipse.ocl.examples.pivot since Indigo] BooleanValue, StringValue, IntegerValue ... too many boxing/wrapping objects Partially polymorphic values also bad Boolean, String but IntegerValue ... too many instanceof tests Fast, Faster, Super-Fast Queries Made available under EPL 1.0 34
  • 34. Simple Interpreted OCL VM Program is an Abstract Syntax Graph (AST) VariableExp references variable to read as a value PropertyCallExp references object and property to read as a value OperationCallExp references operation to apply to some values Run-time Interpretation tree-walking evaluation visitor Extensible with new AST node classes Fast, Faster, Super-Fast Queries Made available under EPL 1.0 35
  • 35. Code Generated OCL VM Program is an Abstract Syntax Graph (AST) Compile-Time Code Generation tree-walking code generating visitor Run-time Execution direct Java, direct model accesses Extensible with new AST node classes Optimisable direct model access getXX() rather than eGet('XX') inlining of non-polymorphic (final) operations Fast, Faster, Super-Fast Queries Made available under EPL 1.0 36
  • 36. (Imperative) OCL VM for QVT Simple OCL VM AST walker QVT richer AST Code generated VM dispatch tables flattened code inlined operations Debugging tools Fast, Faster, Super-Fast Queries Made available under EPL 1.0 37