SlideShare uma empresa Scribd logo
1 de 100
Baixar para ler offline
EMF Compare 2
Scaling to Millions




Mikaël Barbero        26 March 2013
http://idealistpropaganda.blogspot.fr/2010/04/imaginary-foundations-make-difference.html
EMF Compare 2.0



 Released mid-se ptember 2012



     Sponsore d by Ericsson
  under Polarsys and Modeling Platform
        Workin g Group (MPWG)
http://www.flickr.com/photos/9781230@N06/2270505202
Goal: Performance




 Should re late to number of
 differenc     es, not to the size
          of the model




But also simpler API, better understanding of
         differences for end-users...
Brand New UI   Better integration with Team/Compare
http://www.flickr.com/photos/viggum/2417430161/




Demo
Because it worths a thousand words
How does it works?   in a Nutshell
Match
Two Strategies
Two Strategies




            Technical ID
  XMI:id, resource URI + URI fragment,
               your own...
Two Strategies




            Technical ID                    Content based
  XMI:id, resource URI + URI fragment,
                                         Heuristics, String distance
               your own...
http://www.flickr.com/photos/brianjmatis/3209203494/




Differencing
Rationalization
Longest Common Subsequence
http://www.youtube.com/watch?v=RUckZMzqUcw
Dependencies




               http://www.flickr.com/photos/qilin/2262821682/
Package 1
                     Addition of ‘Package 1’ within ‘something’


State machine 1                              requires the merge of


                   Addition of ‘State Machine 1’ within ‘Package 1’




     Requirements between differences
Equivalences




               http://www.bavarianfootballworks.com/2012/9/24/3384502/preview-fc-bayern-vs-vfl-wolfsburg
Class 1
                         Setting ‘Property 1’ to reference ‘Associtation 1’
     Property 1
                                                   the merge is equivalent to
 ends             ass.

   Association 1         Setting ‘Association 1’ to reference ‘Property 1’

‘ass.’ and ‘ends’ are
 opposite references


           Equivalence between differences
http://www.theology21.com/2010/07/27/are-you-talking-to-me-the-art-of-misunderstanding-and-theological-double-talk/




                                                                                                                      Conflicts
Match




                  Difference



Summary
                           Requirement




                                   Equivalence




                                                 Conflict
How to scale to Millions?




                            http://www.flickr.com/photos/somemixedstuff/2403249501/
A graph of EObjects
A «logical» EMF model
A



                                  C




                                      D

A graph of EObjects           B


                      G

In Resources
                          E




                          F
A



                                    C




                                        D

A graph of EObjects             B


                        G

Cross-resources links
                            E




                            F
A   B       C




A graph of Resources                   D
                               E
                       G




                               F
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded




                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded




                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded




                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded




                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded




                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
B     G
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded




                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
B     G
A   B       C
                                 To be Loaded


                                  A

G           E          D         To be Unloaded


                                  A

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
B     G
A   B       C
                                 To be Loaded


                                  A

G           E          D         To be Unloaded


                                  A

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G
A   B       C
                                 To be Loaded


                                  A

G           E          D         To be Unloaded


                                  A

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G
A   B       C
                                 To be Loaded


                                  A

G           E          D         To be Unloaded


                                  A

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G
A   B       C
                                 To be Loaded


                                  A

G           E          D         To be Unloaded


                                  A

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G     C
A   B       C
                                 To be Loaded


                                  A

G           E          D         To be Unloaded


                                  A

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G     C
A   B       C
                                 To be Loaded


                                  A     B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G     C
A   B       C
                                 To be Loaded


                                  A     B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G     C
A   B       C
                                 To be Loaded


                                  B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G     C
A   B       C
                                 To be Loaded


                                  B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G     C
A   B       C
                                 To be Loaded


                                  B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
G     C
A   B       C
                                 To be Loaded


                                  B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded


                                  B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded


                                  B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded


                                  B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
E     D
A   B       C
                                 To be Loaded


                                  B

G           E          D         To be Unloaded


                                  A     B

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
E     D
A   B       C
                                 To be Loaded


                                  B     C       G

G           E          D         To be Unloaded


                                  A     B       C   G

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
E     D
A   B       C
                                 To be Loaded


                                  B     C       G

G           E          D         To be Unloaded


                                  A     B       C   G

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
D
A   B       C
                                 To be Loaded


                                  G

G           E          D         To be Unloaded


                                  A     B       C   G

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
D
A   B       C
                                 To be Loaded


                                  G

G           E          D         To be Unloaded


                                  A     B       C   G

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
D
A   B       C
                                 To be Loaded


                                  G

G           E          D         To be Unloaded


                                  A     B       C   G

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
D
A   B       C
                                 To be Loaded


                                  G

G           E          D         To be Unloaded


                                  A     B       C   G

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
D     F
A   B       C
                                 To be Loaded


                                  G     E

G           E          D         To be Unloaded


                                  A     B       C   G    E

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
D     F
A   B       C
                                 To be Loaded


                                  G     E

G           E          D         To be Unloaded


                                  A     B       C   G    E

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
F
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G     E

                                 Already browsed
            F

                                       Loading Thread
                                       Unloading Thread



        Concurrent Resolve All   Multi-Threaded
F
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G     E

                                 Already browsed
            F

                                       Loading Thread
                                       Unloading Thread



        Concurrent Resolve All   Multi-Threaded
F
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G     E

                                 Already browsed
            F

                                       Loading Thread
                                       Unloading Thread



        Concurrent Resolve All   Multi-Threaded
F
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G     E

                                 Already browsed
            F

                                       Loading Thread
                                       Unloading Thread



        Concurrent Resolve All   Multi-Threaded
F
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G     E

                                 Already browsed
            F

                                       Loading Thread
                                       Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G    E   D

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G    E   D

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G    E   D   F

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G    E   D   F

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G    E   D   F

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded


                                   F

G           E          D         To be Unloaded


                                  A     B       C   G     E   D   F

                                 Already browsed
            F

                                       Loading Thread
                                       Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G    E   D   F

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
A   B       C
                                 To be Loaded




G           E          D         To be Unloaded


                                  A     B       C   G    E   D   F

                                 Already browsed
            F

                                      Loading Thread
                                      Unloading Thread



        Concurrent Resolve All   Multi-Threaded
Why concurrent loading?
The HDD is the bottleneck, right?
Scheduling is crucial
Between loading and unloading threads to
avoid high-memory consumption (our goal)
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
Summary
Summary



  Build the graph of
      resources
Summary



  Build the graph of
      resources




     Concurrent
     resolve all
Summary


                         Find which
  Build the graph of
                       resources has
      resources
                          changed




     Concurrent
     resolve all
Summary


                          Find which
  Build the graph of
                        resources has
      resources
                           changed




     Concurrent        Binary comparison
     resolve all          of resources
Summary


                          Find which
  Build the graph of                       Compare resource
                        resources has
      resources                             with differences
                           changed




     Concurrent        Binary comparison
     resolve all          of resources
Summary


                          Find which
  Build the graph of                       Compare resource
                        resources has
      resources                             with differences
                           changed




                                           Match, Diff, etc.
     Concurrent        Binary comparison
                                           without resolving
     resolve all          of resources
                                                proxies
Kill two pigs with one (angry) bird




                                      http://extremehdwallpapers.com/wp-content/uploads/2012/08/angry-birds-wallpaper-hd-.jpg
http://www.flickr.com/photos/roberts87/2646193801/




                                                    Lightweight   How light?
http://www.flickr.com/photos/themonnie/2495892146/




                                                    Fast   How fast?
Number of fragments (resources)              Number of EObjects                   Disk Usage (XMI files size)
10000                                     10000K                                1000M


1000                                      1000K
                                                                                 100M

 100                                       100K

                                                                                  10M
   10                                       10K



          Small    Medium      Large               Small   Medium   Large                 Small    Medium      Large




                                               Sample Models                The numbers (x2 in 2-ways, x3 in 3-ways)
The
                               promised millions
        Number of fragments (resources)              Number of EObjects                   Disk Usage (XMI files size)
10000                                     10000K                                1000M


1000                                      1000K
                                                                                 100M

 100                                       100K

                                                                                  10M
   10                                       10K



          Small    Medium      Large               Small   Medium   Large                 Small    Medium      Large




                                               Sample Models                The numbers (x2 in 2-ways, x3 in 3-ways)
Small        Medium         Large

                                          120




                                           90



CPU Usage




                             Time (sec)
                                           60

Some changes in 1 resource

                                           30




                                                1                  10                   100
                                                            number of changes
Small        Medium          Large

                                          120




                                           90



CPU Usage




                             Time (sec)
                                           60

1 change in some fragments

                                           30




                                                1           5              10            20
                                                       number of changed fragments
600




                                       450




                      Max Heap (MiB)
Memory Usage
                                       300

Max Heap (-Xmx512m)



                                       150




                                        0
                                             Small   Medium   Large
http://www.flickr.com/photos/exploratorium/4689347618/in/set-72157624060408411   http://www.flickr.com/photos/exploratorium/4680503314/in/set-72157624060408411   http://www.flickr.com/photos/exploratorium/4689346802/in/set-72157624060408411




                                                                                             What’s Next?
Model Resolving        Scope Narrowing    Matching
                    Differencing           Post-Process

                                                                   100 %




                                                                  75 %

Time distribution
                                                                 50 %




                                                                 25 %




                     Small                                      0 %
                                      Nominal
                                                      Large
Index Cross-Resources Links




                              http://www.flickr.com/photos/manchesterlibrary/5425247171/
Eclipse Papyrus support
                          http://www.flickr.com/photos/manchesterlibrary/5425247171/
Porting Eclipse Papyrus support
C
A     B           C
                                           To be Loaded



G                 E           D            To be Unloaded




                                           Already browsed
                  F

                                              Loading Thread
                                              Unloading Thread



    Protect the Integrity of the Model   When committing, updating...
http://nn.wikipedia.org/wiki/Fil:Postcards_and_magnifying_glass.jpg




                                       Generic Content Based Match Engine   Decently Fast
http://cdn.memegenerator.net/instances/400x/20451927.jpg




                                                           Merge Wizard   Help to Resolve Conflict
http://www.space.com/17376-sharing-the-light-of-two-suns.html




                                                                EMF Compare 2.1   With Kepler (Eclipse 4.3), June 2013
What you should remember


    New UI



       Blazing Fast and
         Lightweight



              More to come ;)
http://www.eclipse.org/emf/compare/
http://www.slideshare.net/mikaelbarbero/

Mais conteúdo relacionado

Mais procurados

Mais procurados (14)

Y S S M Logos
Y S S M LogosY S S M Logos
Y S S M Logos
 
SND covers pt2
SND covers pt2SND covers pt2
SND covers pt2
 
La fiscalía y el gobierno están en mora de proteger a las víctimas en los cas...
La fiscalía y el gobierno están en mora de proteger a las víctimas en los cas...La fiscalía y el gobierno están en mora de proteger a las víctimas en los cas...
La fiscalía y el gobierno están en mora de proteger a las víctimas en los cas...
 
2011 willowbank nz a thon yr 0 2
2011 willowbank nz a thon yr 0 22011 willowbank nz a thon yr 0 2
2011 willowbank nz a thon yr 0 2
 
Presentation1
Presentation1Presentation1
Presentation1
 
Tube balancing question
Tube balancing question Tube balancing question
Tube balancing question
 
Seating arrangement - for selecting the places (non biased way)
Seating arrangement - for selecting the places (non biased way)Seating arrangement - for selecting the places (non biased way)
Seating arrangement - for selecting the places (non biased way)
 
IDentifEYE AR game markers
IDentifEYE AR game markersIDentifEYE AR game markers
IDentifEYE AR game markers
 
Not sure whatever
Not sure whateverNot sure whatever
Not sure whatever
 
Canon clic
Canon clicCanon clic
Canon clic
 
Test
TestTest
Test
 
Input output
Input outputInput output
Input output
 
Bins, icons and colors
Bins, icons and colorsBins, icons and colors
Bins, icons and colors
 
Doc2
Doc2Doc2
Doc2
 

Destaque

You need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF ProfilesYou need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF ProfilesPhilip Langer
 
ATL tutorial - EclipseCon 2008
ATL tutorial - EclipseCon 2008ATL tutorial - EclipseCon 2008
ATL tutorial - EclipseCon 2008William Piers
 
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...Marco Brambilla
 
Programming in UML: An Introduction to fUML and Alf
Programming in UML: An Introduction to fUML and AlfProgramming in UML: An Introduction to fUML and Alf
Programming in UML: An Introduction to fUML and AlfEd Seidewitz
 
Textual Modeling Framework Xtext
Textual Modeling Framework XtextTextual Modeling Framework Xtext
Textual Modeling Framework XtextSebastian Zarnekow
 
The Unbearable Stupidity of Modeling
The Unbearable Stupidity of ModelingThe Unbearable Stupidity of Modeling
The Unbearable Stupidity of ModelingPeter Friese
 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010fmadiot
 
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionModel-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionMarco Brambilla
 
Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Marco Brambilla
 
Domain-Specific Languages
Domain-Specific LanguagesDomain-Specific Languages
Domain-Specific LanguagesJavier Canovas
 
Real world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same languageReal world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same languageMario Fusco
 
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)Jordi Cabot
 
Eclipse World 2007: Fundamentals of the Eclipse Modeling Framework
Eclipse World 2007: Fundamentals of the Eclipse Modeling FrameworkEclipse World 2007: Fundamentals of the Eclipse Modeling Framework
Eclipse World 2007: Fundamentals of the Eclipse Modeling FrameworkDave Steinberg
 
Single-Source approach to the design of HW/SW Embedded Systems
Single-Source approach to the design of HW/SW Embedded SystemsSingle-Source approach to the design of HW/SW Embedded Systems
Single-Source approach to the design of HW/SW Embedded SystemsEugenio Villar
 
Model-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & OverviewModel-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & OverviewEelco Visser
 

Destaque (20)

You need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF ProfilesYou need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF Profiles
 
ATL tutorial - EclipseCon 2008
ATL tutorial - EclipseCon 2008ATL tutorial - EclipseCon 2008
ATL tutorial - EclipseCon 2008
 
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
 
Programming in UML: An Introduction to fUML and Alf
Programming in UML: An Introduction to fUML and AlfProgramming in UML: An Introduction to fUML and Alf
Programming in UML: An Introduction to fUML and Alf
 
Textual Modeling Framework Xtext
Textual Modeling Framework XtextTextual Modeling Framework Xtext
Textual Modeling Framework Xtext
 
Acceleo Code Generation
Acceleo Code GenerationAcceleo Code Generation
Acceleo Code Generation
 
The Unbearable Stupidity of Modeling
The Unbearable Stupidity of ModelingThe Unbearable Stupidity of Modeling
The Unbearable Stupidity of Modeling
 
Eugenia
EugeniaEugenia
Eugenia
 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010
 
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - IntroductionModel-Driven Software Engineering in Practice - Chapter 1 - Introduction
Model-Driven Software Engineering in Practice - Chapter 1 - Introduction
 
OCL tutorial
OCL tutorial OCL tutorial
OCL tutorial
 
Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...
 
Domain-Specific Languages
Domain-Specific LanguagesDomain-Specific Languages
Domain-Specific Languages
 
Introducing MDSD
Introducing MDSDIntroducing MDSD
Introducing MDSD
 
Real world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same languageReal world DSL - making technical and business people speaking the same language
Real world DSL - making technical and business people speaking the same language
 
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
MDD - Desarrollo de software dirigido por modelos que funciona (de verdad!)
 
Eclipse World 2007: Fundamentals of the Eclipse Modeling Framework
Eclipse World 2007: Fundamentals of the Eclipse Modeling FrameworkEclipse World 2007: Fundamentals of the Eclipse Modeling Framework
Eclipse World 2007: Fundamentals of the Eclipse Modeling Framework
 
Single-Source approach to the design of HW/SW Embedded Systems
Single-Source approach to the design of HW/SW Embedded SystemsSingle-Source approach to the design of HW/SW Embedded Systems
Single-Source approach to the design of HW/SW Embedded Systems
 
Unified Modeling Language
Unified Modeling LanguageUnified Modeling Language
Unified Modeling Language
 
Model-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & OverviewModel-Driven Software Development - Introduction & Overview
Model-Driven Software Development - Introduction & Overview
 

Semelhante a EMF Compare 2.0: Scaling to Millions (updated)

Solidmodelling
SolidmodellingSolidmodelling
SolidmodellingGopi Chand
 
NYC* Jonathan Ellis Keynote: "Cassandra 1.2 + 2.0"
NYC* Jonathan Ellis Keynote: "Cassandra 1.2 + 2.0"NYC* Jonathan Ellis Keynote: "Cassandra 1.2 + 2.0"
NYC* Jonathan Ellis Keynote: "Cassandra 1.2 + 2.0"DataStax Academy
 
C*ollege Credit: What's New in Apache Cassandra 1.2
C*ollege Credit: What's New in Apache Cassandra 1.2C*ollege Credit: What's New in Apache Cassandra 1.2
C*ollege Credit: What's New in Apache Cassandra 1.2DataStax
 
Generic Image Processing With Climb - Slides
Generic Image Processing With Climb - SlidesGeneric Image Processing With Climb - Slides
Generic Image Processing With Climb - SlidesLaurent Senta
 

Semelhante a EMF Compare 2.0: Scaling to Millions (updated) (7)

Major+Scales
Major+ScalesMajor+Scales
Major+Scales
 
Palm Pipes
Palm PipesPalm Pipes
Palm Pipes
 
Trees and Hierarchies in SQL
Trees and Hierarchies in SQLTrees and Hierarchies in SQL
Trees and Hierarchies in SQL
 
Solidmodelling
SolidmodellingSolidmodelling
Solidmodelling
 
NYC* Jonathan Ellis Keynote: "Cassandra 1.2 + 2.0"
NYC* Jonathan Ellis Keynote: "Cassandra 1.2 + 2.0"NYC* Jonathan Ellis Keynote: "Cassandra 1.2 + 2.0"
NYC* Jonathan Ellis Keynote: "Cassandra 1.2 + 2.0"
 
C*ollege Credit: What's New in Apache Cassandra 1.2
C*ollege Credit: What's New in Apache Cassandra 1.2C*ollege Credit: What's New in Apache Cassandra 1.2
C*ollege Credit: What's New in Apache Cassandra 1.2
 
Generic Image Processing With Climb - Slides
Generic Image Processing With Climb - SlidesGeneric Image Processing With Climb - Slides
Generic Image Processing With Climb - Slides
 

Mais de mikaelbarbero

Kubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating SystemKubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating Systemmikaelbarbero
 
Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?mikaelbarbero
 
What's new in Eclipse Oxygen (Devoxx France 2017)
What's new in Eclipse Oxygen (Devoxx France 2017)What's new in Eclipse Oxygen (Devoxx France 2017)
What's new in Eclipse Oxygen (Devoxx France 2017)mikaelbarbero
 
The Eclipse IDE: What's new in the 2017 release?
The Eclipse IDE: What's new in the 2017 release?The Eclipse IDE: What's new in the 2017 release?
The Eclipse IDE: What's new in the 2017 release?mikaelbarbero
 
What every Eclipse developer should know about progress reporting and job can...
What every Eclipse developer should know about progress reporting and job can...What every Eclipse developer should know about progress reporting and job can...
What every Eclipse developer should know about progress reporting and job can...mikaelbarbero
 
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)mikaelbarbero
 
Sirius: Graphical Editors for your DSLs
Sirius: Graphical Editors for your DSLsSirius: Graphical Editors for your DSLs
Sirius: Graphical Editors for your DSLsmikaelbarbero
 
Modeling in a Team Environment with EMF Compare and EGit
Modeling in a Team Environment with EMF Compare and EGitModeling in a Team Environment with EMF Compare and EGit
Modeling in a Team Environment with EMF Compare and EGitmikaelbarbero
 
Diff and Merge with Ease: EMF Compare
Diff and Merge with Ease: EMF CompareDiff and Merge with Ease: EMF Compare
Diff and Merge with Ease: EMF Comparemikaelbarbero
 
Eclipse simultaneous release in a nutshell
Eclipse simultaneous release in a nutshellEclipse simultaneous release in a nutshell
Eclipse simultaneous release in a nutshellmikaelbarbero
 
OSGi: Don't let me be Misunderstood
OSGi: Don't let me be MisunderstoodOSGi: Don't let me be Misunderstood
OSGi: Don't let me be Misunderstoodmikaelbarbero
 
EMF.Edit the Force Unleashed!
EMF.Edit the Force Unleashed!EMF.Edit the Force Unleashed!
EMF.Edit the Force Unleashed!mikaelbarbero
 
3mf infinity-and-beyond
3mf infinity-and-beyond3mf infinity-and-beyond
3mf infinity-and-beyondmikaelbarbero
 
Eclipseconeurope 2011 - EMFCompare Improvements
Eclipseconeurope 2011 - EMFCompare ImprovementsEclipseconeurope 2011 - EMFCompare Improvements
Eclipseconeurope 2011 - EMFCompare Improvementsmikaelbarbero
 
Google Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG NantesGoogle Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG Nantesmikaelbarbero
 
5M lines of code migration
5M lines of code migration5M lines of code migration
5M lines of code migrationmikaelbarbero
 
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)mikaelbarbero
 

Mais de mikaelbarbero (18)

Kubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating SystemKubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating System
 
Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?
 
What's new in Eclipse Oxygen (Devoxx France 2017)
What's new in Eclipse Oxygen (Devoxx France 2017)What's new in Eclipse Oxygen (Devoxx France 2017)
What's new in Eclipse Oxygen (Devoxx France 2017)
 
The Eclipse IDE: What's new in the 2017 release?
The Eclipse IDE: What's new in the 2017 release?The Eclipse IDE: What's new in the 2017 release?
The Eclipse IDE: What's new in the 2017 release?
 
What every Eclipse developer should know about progress reporting and job can...
What every Eclipse developer should know about progress reporting and job can...What every Eclipse developer should know about progress reporting and job can...
What every Eclipse developer should know about progress reporting and job can...
 
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
 
Sirius: Graphical Editors for your DSLs
Sirius: Graphical Editors for your DSLsSirius: Graphical Editors for your DSLs
Sirius: Graphical Editors for your DSLs
 
Modeling in a Team Environment with EMF Compare and EGit
Modeling in a Team Environment with EMF Compare and EGitModeling in a Team Environment with EMF Compare and EGit
Modeling in a Team Environment with EMF Compare and EGit
 
Diff and Merge with Ease: EMF Compare
Diff and Merge with Ease: EMF CompareDiff and Merge with Ease: EMF Compare
Diff and Merge with Ease: EMF Compare
 
Eclipse simultaneous release in a nutshell
Eclipse simultaneous release in a nutshellEclipse simultaneous release in a nutshell
Eclipse simultaneous release in a nutshell
 
OSGi: Don't let me be Misunderstood
OSGi: Don't let me be MisunderstoodOSGi: Don't let me be Misunderstood
OSGi: Don't let me be Misunderstood
 
EMF.Edit the Force Unleashed!
EMF.Edit the Force Unleashed!EMF.Edit the Force Unleashed!
EMF.Edit the Force Unleashed!
 
3mf infinity-and-beyond
3mf infinity-and-beyond3mf infinity-and-beyond
3mf infinity-and-beyond
 
Eclipseconeurope 2011 - EMFCompare Improvements
Eclipseconeurope 2011 - EMFCompare ImprovementsEclipseconeurope 2011 - EMFCompare Improvements
Eclipseconeurope 2011 - EMFCompare Improvements
 
Google Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG NantesGoogle Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG Nantes
 
5M lines of code migration
5M lines of code migration5M lines of code migration
5M lines of code migration
 
EMFPath
EMFPathEMFPath
EMFPath
 
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
 

Último

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 

Último (20)

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

EMF Compare 2.0: Scaling to Millions (updated)

  • 1. EMF Compare 2 Scaling to Millions Mikaël Barbero 26 March 2013
  • 2. http://idealistpropaganda.blogspot.fr/2010/04/imaginary-foundations-make-difference.html EMF Compare 2.0 Released mid-se ptember 2012 Sponsore d by Ericsson under Polarsys and Modeling Platform Workin g Group (MPWG)
  • 3. http://www.flickr.com/photos/9781230@N06/2270505202 Goal: Performance Should re late to number of differenc es, not to the size of the model But also simpler API, better understanding of differences for end-users...
  • 4. Brand New UI Better integration with Team/Compare
  • 6. How does it works? in a Nutshell
  • 9. Two Strategies Technical ID XMI:id, resource URI + URI fragment, your own...
  • 10. Two Strategies Technical ID Content based XMI:id, resource URI + URI fragment, Heuristics, String distance your own...
  • 13. Dependencies http://www.flickr.com/photos/qilin/2262821682/
  • 14. Package 1 Addition of ‘Package 1’ within ‘something’ State machine 1 requires the merge of Addition of ‘State Machine 1’ within ‘Package 1’ Requirements between differences
  • 15. Equivalences http://www.bavarianfootballworks.com/2012/9/24/3384502/preview-fc-bayern-vs-vfl-wolfsburg
  • 16. Class 1 Setting ‘Property 1’ to reference ‘Associtation 1’ Property 1 the merge is equivalent to ends ass. Association 1 Setting ‘Association 1’ to reference ‘Property 1’ ‘ass.’ and ‘ends’ are opposite references Equivalence between differences
  • 18. Match Difference Summary Requirement Equivalence Conflict
  • 19. How to scale to Millions? http://www.flickr.com/photos/somemixedstuff/2403249501/
  • 20. A graph of EObjects A «logical» EMF model
  • 21. A C D A graph of EObjects B G In Resources E F
  • 22. A C D A graph of EObjects B G Cross-resources links E F
  • 23. A B C A graph of Resources D E G F
  • 24. A B C Ancestor D E G A B C Left (local) F D E G A B C F D E G F Right (remote)
  • 25. A B C Ancestor D E G A B C Left (local) F D E G A B C F D E G F Right (remote)
  • 26. A B C Ancestor D E G A B C Left (local) F D E G A B C F D E G F Right (remote)
  • 27. A B C To be Loaded G E D To be Unloaded Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 28. A A B C To be Loaded G E D To be Unloaded Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 29. A B C To be Loaded G E D To be Unloaded Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 30. A B C To be Loaded G E D To be Unloaded Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 31. A B C To be Loaded G E D To be Unloaded Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 32. B G A B C To be Loaded G E D To be Unloaded Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 33. B G A B C To be Loaded A G E D To be Unloaded A Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 34. B G A B C To be Loaded A G E D To be Unloaded A Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 35. G A B C To be Loaded A G E D To be Unloaded A Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 36. G A B C To be Loaded A G E D To be Unloaded A Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 37. G A B C To be Loaded A G E D To be Unloaded A Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 38. G C A B C To be Loaded A G E D To be Unloaded A Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 39. G C A B C To be Loaded A B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 40. G C A B C To be Loaded A B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 41. G C A B C To be Loaded B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 42. G C A B C To be Loaded B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 43. G C A B C To be Loaded B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 44. G C A B C To be Loaded B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 45. A B C To be Loaded B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 46. A B C To be Loaded B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 47. A B C To be Loaded B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 48. E D A B C To be Loaded B G E D To be Unloaded A B Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 49. E D A B C To be Loaded B C G G E D To be Unloaded A B C G Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 50. E D A B C To be Loaded B C G G E D To be Unloaded A B C G Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 51. D A B C To be Loaded G G E D To be Unloaded A B C G Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 52. D A B C To be Loaded G G E D To be Unloaded A B C G Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 53. D A B C To be Loaded G G E D To be Unloaded A B C G Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 54. D A B C To be Loaded G G E D To be Unloaded A B C G Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 55. D F A B C To be Loaded G E G E D To be Unloaded A B C G E Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 56. D F A B C To be Loaded G E G E D To be Unloaded A B C G E Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 57. F A B C To be Loaded G E D To be Unloaded A B C G E Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 58. F A B C To be Loaded G E D To be Unloaded A B C G E Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 59. F A B C To be Loaded G E D To be Unloaded A B C G E Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 60. F A B C To be Loaded G E D To be Unloaded A B C G E Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 61. F A B C To be Loaded G E D To be Unloaded A B C G E Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 62. A B C To be Loaded G E D To be Unloaded A B C G E D Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 63. A B C To be Loaded G E D To be Unloaded A B C G E D Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 64. A B C To be Loaded G E D To be Unloaded A B C G E D F Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 65. A B C To be Loaded G E D To be Unloaded A B C G E D F Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 66. A B C To be Loaded G E D To be Unloaded A B C G E D F Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 67. A B C To be Loaded F G E D To be Unloaded A B C G E D F Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 68. A B C To be Loaded G E D To be Unloaded A B C G E D F Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 69. A B C To be Loaded G E D To be Unloaded A B C G E D F Already browsed F Loading Thread Unloading Thread Concurrent Resolve All Multi-Threaded
  • 70. Why concurrent loading? The HDD is the bottleneck, right?
  • 71. Scheduling is crucial Between loading and unloading threads to avoid high-memory consumption (our goal)
  • 72. A B C Ancestor D E G A B C Left (local) F D E G A B C F D E G F Right (remote)
  • 73. A B C Ancestor D E G A B C Left (local) F D E G A B C F D E G F Right (remote)
  • 74. A B C Ancestor D E G A B C Left (local) F D E G A B C F D E G F Right (remote)
  • 76. Summary Build the graph of resources
  • 77. Summary Build the graph of resources Concurrent resolve all
  • 78. Summary Find which Build the graph of resources has resources changed Concurrent resolve all
  • 79. Summary Find which Build the graph of resources has resources changed Concurrent Binary comparison resolve all of resources
  • 80. Summary Find which Build the graph of Compare resource resources has resources with differences changed Concurrent Binary comparison resolve all of resources
  • 81. Summary Find which Build the graph of Compare resource resources has resources with differences changed Match, Diff, etc. Concurrent Binary comparison without resolving resolve all of resources proxies
  • 82. Kill two pigs with one (angry) bird http://extremehdwallpapers.com/wp-content/uploads/2012/08/angry-birds-wallpaper-hd-.jpg
  • 85. Number of fragments (resources) Number of EObjects Disk Usage (XMI files size) 10000 10000K 1000M 1000 1000K 100M 100 100K 10M 10 10K Small Medium Large Small Medium Large Small Medium Large Sample Models The numbers (x2 in 2-ways, x3 in 3-ways)
  • 86. The promised millions Number of fragments (resources) Number of EObjects Disk Usage (XMI files size) 10000 10000K 1000M 1000 1000K 100M 100 100K 10M 10 10K Small Medium Large Small Medium Large Small Medium Large Sample Models The numbers (x2 in 2-ways, x3 in 3-ways)
  • 87. Small Medium Large 120 90 CPU Usage Time (sec) 60 Some changes in 1 resource 30 1 10 100 number of changes
  • 88. Small Medium Large 120 90 CPU Usage Time (sec) 60 1 change in some fragments 30 1 5 10 20 number of changed fragments
  • 89. 600 450 Max Heap (MiB) Memory Usage 300 Max Heap (-Xmx512m) 150 0 Small Medium Large
  • 90. http://www.flickr.com/photos/exploratorium/4689347618/in/set-72157624060408411 http://www.flickr.com/photos/exploratorium/4680503314/in/set-72157624060408411 http://www.flickr.com/photos/exploratorium/4689346802/in/set-72157624060408411 What’s Next?
  • 91. Model Resolving Scope Narrowing Matching Differencing Post-Process 100 % 75 % Time distribution 50 % 25 % Small 0 % Nominal Large
  • 92. Index Cross-Resources Links http://www.flickr.com/photos/manchesterlibrary/5425247171/
  • 93. Eclipse Papyrus support http://www.flickr.com/photos/manchesterlibrary/5425247171/
  • 95. C A B C To be Loaded G E D To be Unloaded Already browsed F Loading Thread Unloading Thread Protect the Integrity of the Model When committing, updating...
  • 96. http://nn.wikipedia.org/wiki/Fil:Postcards_and_magnifying_glass.jpg Generic Content Based Match Engine Decently Fast
  • 97. http://cdn.memegenerator.net/instances/400x/20451927.jpg Merge Wizard Help to Resolve Conflict
  • 98. http://www.space.com/17376-sharing-the-light-of-two-suns.html EMF Compare 2.1 With Kepler (Eclipse 4.3), June 2013
  • 99. What you should remember New UI Blazing Fast and Lightweight More to come ;)