SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
Are Java Programmers Transitioning to
                         Multicore?
             A Large Scale Study of Java FLOSS

      Weslley Torres Gustavo Pinto Benito Fernandes
    Jo˜o Paulo Oliveira
      a                 Filipe Ximenes Fernando Castor

                    Informatics Center - Federal University of Pernambuco


                                            October 23, 2011



SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Introduction

   Problem
    1. In spite of multicore and...
    2. many languages providing constructs for concurrent
       programming...
    3. we have no idea about how developers use these constructs in
       practice.




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Introduction

   Problem
    1. In spite of multicore and...
    2. many languages providing constructs for concurrent
       programming...
    3. we have no idea about how developers use these constructs in
       practice.

   Our Study
    1. A study targeting a large-scale FLOSS repository
    2. To discover what concurrency mechanisms programmers use.
    3. The frequency of use and system evolution along time.

    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Introduction

   Implications for Research and Practice
    1. Researchers
           1.1 To design new mechanisms.
           1.2 To improve existing ones, based on development practice.
    2. Software Developers : Might lead to more efficient use of
       existing abstractions
    3. It is important to know!




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Introduction

   Implications for Research and Practice
    1. Researchers
           1.1 To design new mechanisms.
           1.2 To improve existing ones, based on development practice.
    2. Software Developers : Might lead to more efficient use of
       existing abstractions
    3. It is important to know!

   Why Java?
    1. Widely used object-oriented programming language.
    2. Supports for multi-threading (low level and high level).
    3. Programming language with more projects at SourceForge
       (46.665 rojects).
    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Research Questions




          Two dimensions: Spatial and Temporal


           RQ1 - How often are the Java concurrency constructs
          employed in real applications?

           RQ2 - Are programmers aware about the transition from
          singlecore to multicore?




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ1 - Metrics


        Metric Category                 Element
        Concurrent                      Instantiations of BlockingQueue,ConcurrentMap,
        collections                     SynchronousQueue, ConcurrentHashMap,
        Synchronized                    Occurrences of synchronized methods and blocks.
        Atomic data                     Uses of AtomicInteger,
        types                           AtomicLong, and AtomicBoolean
        Barriers                        Uses of CyclicBarrier and CountDownLatch
        Locks                           Instantiations of LockSupport,
                                        ReentrantLock
        Others                          extends Thread/Runnable, implements Runnable
                                        import java.util.concurrent (and its subpackages)
        Size                            Lines of Code

                                              Table: Some Metrics



    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ2 - Are programmers aware about the transition from
singlecore to multicore?


   We have broken this question into three more:

           RQ2.1 - Are developers employing more concurrent
          programming constructs?

           RQ2.2 - Are developers wasting opportunities to use j.u.c.?

           RQ2.3 - Have threads been used to improve concurrency or
          parallelism?




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Intrastructure




          Only projects with some version released after 2004
          Many projects were discarded

    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
General information



             #Projects (subprojects included)                                               2.343
             #Small concurrent projects                                                     1.300
             #Small non-concurrent projects                                                 489
             #Medium concurrent projects                                                    635
             #Medium non-concurrent projects                                                32
             #Big concurrent projects                                                       199
             #Big non-concurrent projects                                                   0
             # of LoC of the last version of the biggest project                            1.702.972
             Size on disk (all versions of all projects)                                    124GB

                        Table: General information about the projects.




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ1 - How often are the Java concurrency constructs
employed in real applications?


  Metrics             Median                         Mean                           Std. Dev.                  #Projects
  #1           4        14        51       11.2      39.47      119.7      22.56     65.88      189.73   703     535       189
  #2           6        24        90       12.6      50.53      152.3      20.07     74.02      188.66   941     586       196
  #3           1.5      3         6        2.41      4.8        9.46       2.17      6.07       11.32    520     399       152
  #4           2        3         6        2.71      6.38       13.04      3.02      10.3       17.8     596     416        168
  #5           1       2         1         1.91      2.86       6.05       1.24      3.60       14.17    6      9          17


       Table: Metricts by categories (small/medium/big projects, respectively)

    where:
         #1: synchronized blocks
                                                                                  #4: implementing Runnable
         #2: synchronized methods
                                                                                  #5: interfaces extending
         #3: classes extending                                                    Runnable
         Thread
       SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ1 - How often are the Java concurrency constructs
employed in real applications?


    metrics           Median                  Mean                        Std. Dev.                  #Projects
    #1            2     3      6    3.07      9.05      16.02      2.71     16.16      21.63   39       70       47
    #2            1     2      4    2.32      7.17      6.77       3.48     17.91      8.70     43      82        53
    #3            2     2      2    3.80      3.61      2.88       3.83     3.79       2.26    31      42        26
    #4            2     3      4    3.17      7.12      13.07      4.12     11.17      21.01   86       97       61
    #5            2     2      3    2.25      6.44      5.8        1.81     26.35      8.07    71       92       60


   Table: Metricts by categories (small/medium/big projects, respectively)

   where:
      #1: atomic data types
                                                                             #4: concurrent collections
      #2: locks
                                                                             #5: executors
      #3: futures

    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Some facts

          49% of the big concurrent projects, 32.4% of the medium
          ones, and only 15.5% of the small ones employ
          java.util.concurrent
                   For synchronized blocks, the percentages are 94.97%,
                   84.64%, and 54.07%, respectively




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Some facts

          49% of the big concurrent projects, 32.4% of the medium
          ones, and only 15.5% of the small ones employ
          java.util.concurrent
                   For synchronized blocks, the percentages are 94.97%,
                   84.64%, and 54.07%, respectively

          139 projects define threads but do not use synchronized
                   Often worker threads in small (< 10KLoC) projects




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Some facts

          49% of the big concurrent projects, 32.4% of the medium
          ones, and only 15.5% of the small ones employ
          java.util.concurrent
                   For synchronized blocks, the percentages are 94.97%,
                   84.64%, and 54.07%, respectively

          139 projects define threads but do not use synchronized
                   Often worker threads in small (< 10KLoC) projects

          44 projects employ the java.util.concurrent library but
          not the synchronized keyword

          10% of the analyzed projects employ concurrent collections,
          particularly ConcurrentHashMap

    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ2.1 – Usage of the synchronized keyword
  Per 100KLoC




   SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ2.1 – Usage of atomic data types
   Per 100KLoC




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ2.1 – Usage of concurrent collections

   Per 100KLoC – Mainly ConcurrentHashMap




     SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ2.1 – Usage of executors
   Per 100KLoC – Mainly thread pools




     SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Are developers wasting opportunities to use j.u.c.?



   Methodology
    1. Randomly chosen 100 projects out of all the 1830 concurrent
       projects.

    2. Randomly collected 1–3 examples of the use of the
       synchronized keyword in these projects.

    3. Analyzed 276 examples of synchronized usage.
                   Some systems had fewer than 3 occurrences of synchronized.




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Are developers wasting opportunities to use j.u.c.?



   Results
    1. We found 28 cases where the use of synchronized could be
       avoided in 25 projects.

    2. 40% of these projects already use j.u.c. somehow.

    3. In most cases, the synchronized keyword cannot be removed
       because of the complexity of the operations.




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ2.3: Concurrency vs. Parallelism



          Still much work to do.

          Existing systems seem to be getting more concurrent
                   But not much...

          Some (e.g., Lucene) are also getting more parallel




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ2.3: Concurrency vs. Parallelism



          Still much work to do.

          Existing systems seem to be getting more concurrent
                   But not much...

          Some (e.g., Lucene) are also getting more parallel

          How can we know for sure?




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ2.3: Concurrency vs. Parallelism



          Still much work to do.

          Existing systems seem to be getting more concurrent
                   But not much...

          Some (e.g., Lucene) are also getting more parallel

          How can we know for sure?

          Suggestions?




    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Future Work




         Threads for Concurrency vs. Threads for Parallelism




   SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Future Work




         Threads for Concurrency vs. Threads for Parallelism

         Atomic Data Types for actual variables instead of specific
         pieces of code.




   SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Future Work




         Threads for Concurrency vs. Threads for Parallelism

         Atomic Data Types for actual variables instead of specific
         pieces of code.

         To investigate the organization of concurrency code in the
         analyzed projects.




   SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Thank you




   SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Why the Web and not a version control system?


          SourceForge’s SVN repositories do not have a fixed structure

          It is difficult to know whether a given version is a release or a
          development version
                   Difficult to know what is an actual version


          SourceForge projects employ more than one kind of repository

          On the other hand, SourceForge’s Web site organizes things
          somewhat



    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Metric Category                  Element
     Thread methods                   Calls to interrupt, join, run, setDaemon,
                                      sleep, yield, and getContextLoader
     Object methods                   Calls to wait, notify, notifyAll
     Concurrent                       Instantiations of BlockingQueue,
     collections                      ArrayBlockingQueue, ConcurrentMap,
                                      LinkedBlockingDeque, LinkedBlockingQueue,
                                      LinkedTransferQueue, PriorityBlockingQueue,
                                      SynchronousQueue, ConcurrentHashMap,
                                      DelayQueue, ConcurrentSkipListMap
     Synchronized                     Occurrences of synchronized methods and
     keyword                          blocks.
     Executors                        Uses of ExecutorService, ForkJoinPool,
                                      Executor, Executors, ScheduledExecutorService,
                                      AbstractExecutorService, ThreadPoolExecutor,
                                      ScheduledThreadPoolExecutor

                                          Table: List of metrics


SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
Metric Category                 Element
Atomic data                     Uses of AtomicInteger,
types                           AtomicLong, and AtomicBoolean
Barriers                        Uses of CyclicBarrier and CountDownLatch
Futures                         Uses of Future, Response, RunnableFuture
                                RunnableScheduledFuture, ScheduledFuture,
                                FutureTask, ForkJoinTask, RecursiveAction,
                                RecursiveTask, SwingWorker
Locks                           Instantiations of LockSupport,
                                ReentrantLock, ReentrantReadWriteLock,
                                ReentrantReadWriteLockReadLock,
                                ReentrantReadWriteLockWriteLock
Others                          extends Thread/Runnable, implements Runnable, volatile
                                modifier, import java.util.concurrent (and its
                                subpackages)
Size                            L of Code

                                          Table: List of metrics

SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
RQ1 - How often are the Java concurrency constructs
employed in real applications? ALL PROJECTS


                               metrics      Median       Mean         Std. Dev.       #Projects
                               #1           108.77       223.81       362.21          1634
                               #2           12.23        25.63        39.08           924
                               #3           2.97         8.83         12.41           40
                               #4           14.26        32.52        52.42           1031
                               #5           31.17        91.85        195.61          470

                                      Table: Metricts per 100KLOC

   where:
      #1: synchronized
      keywords                                                               #4: implements runnable
      #2: extends thread                                                     #5: use of j.u.c.
      #3: extends runnable

    SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.

Weitere ähnliche Inhalte

Was ist angesagt?

Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Raffi Khatchadourian
 
Benchmarking open source deep learning frameworks
Benchmarking open source deep learning frameworksBenchmarking open source deep learning frameworks
Benchmarking open source deep learning frameworksIJECEIAES
 
OpenComRTOS 1.4_tutorial_3o4_presentation
OpenComRTOS 1.4_tutorial_3o4_presentationOpenComRTOS 1.4_tutorial_3o4_presentation
OpenComRTOS 1.4_tutorial_3o4_presentationEric Verhulst
 
iFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsiFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsShinpei Hayashi
 
Automated Refactoring of Legacy Java Software to Default Methods Talk at GMU
Automated Refactoring of Legacy Java Software to Default Methods Talk at GMUAutomated Refactoring of Legacy Java Software to Default Methods Talk at GMU
Automated Refactoring of Legacy Java Software to Default Methods Talk at GMURaffi Khatchadourian
 
What java developers (don’t) know about api compatibility
What java developers (don’t) know about api compatibilityWhat java developers (don’t) know about api compatibility
What java developers (don’t) know about api compatibilityJens Dietrich
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapTakanori Ugai
 

Was ist angesagt? (7)

Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
 
Benchmarking open source deep learning frameworks
Benchmarking open source deep learning frameworksBenchmarking open source deep learning frameworks
Benchmarking open source deep learning frameworks
 
OpenComRTOS 1.4_tutorial_3o4_presentation
OpenComRTOS 1.4_tutorial_3o4_presentationOpenComRTOS 1.4_tutorial_3o4_presentation
OpenComRTOS 1.4_tutorial_3o4_presentation
 
iFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsiFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature Implementations
 
Automated Refactoring of Legacy Java Software to Default Methods Talk at GMU
Automated Refactoring of Legacy Java Software to Default Methods Talk at GMUAutomated Refactoring of Legacy Java Software to Default Methods Talk at GMU
Automated Refactoring of Legacy Java Software to Default Methods Talk at GMU
 
What java developers (don’t) know about api compatibility
What java developers (don’t) know about api compatibilityWhat java developers (don’t) know about api compatibility
What java developers (don’t) know about api compatibility
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored Map
 

Andere mochten auch

What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...UFPA
 
OpenCV installation in windows visual studio
OpenCV installation in windows visual studioOpenCV installation in windows visual studio
OpenCV installation in windows visual studioPeter Jose
 
Beljug2010
Beljug2010Beljug2010
Beljug2010UFPA
 
Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL Emerson Saito
 
A computacao e_voce_caminhos_para_seguir
A computacao e_voce_caminhos_para_seguirA computacao e_voce_caminhos_para_seguir
A computacao e_voce_caminhos_para_seguirUFPA
 
Possibilidades com python
Possibilidades com pythonPossibilidades com python
Possibilidades com pythonUFPA
 
Python Workshop
Python WorkshopPython Workshop
Python Workshopkbhat95
 
Computer Vision in Academia and Industry (Dmytro Mishkin Technology Stream)
Computer Vision in Academia and Industry (Dmytro Mishkin Technology Stream)Computer Vision in Academia and Industry (Dmytro Mishkin Technology Stream)
Computer Vision in Academia and Industry (Dmytro Mishkin Technology Stream)IT Arena
 
Porque aprender haskell me fez um programador python melhor?
Porque aprender haskell me fez um programador python melhor?Porque aprender haskell me fez um programador python melhor?
Porque aprender haskell me fez um programador python melhor?UFPA
 
Python simplecv
Python simplecvPython simplecv
Python simplecvUFPA
 
Apresentação Monografia - Máquina de Comitê para previsão do preço médio diár...
Apresentação Monografia - Máquina de Comitê para previsão do preço médio diár...Apresentação Monografia - Máquina de Comitê para previsão do preço médio diár...
Apresentação Monografia - Máquina de Comitê para previsão do preço médio diár...José Alexandre Macedo
 
Grails from scratch
Grails from scratchGrails from scratch
Grails from scratchUFPA
 
Notion de fonction en Python
Notion de fonction en PythonNotion de fonction en Python
Notion de fonction en PythonSylvain Leroux
 

Andere mochten auch (15)

What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
 
Theme 10
Theme 10Theme 10
Theme 10
 
OpenCV installation in windows visual studio
OpenCV installation in windows visual studioOpenCV installation in windows visual studio
OpenCV installation in windows visual studio
 
Theme 10
Theme 10Theme 10
Theme 10
 
Beljug2010
Beljug2010Beljug2010
Beljug2010
 
Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL
 
A computacao e_voce_caminhos_para_seguir
A computacao e_voce_caminhos_para_seguirA computacao e_voce_caminhos_para_seguir
A computacao e_voce_caminhos_para_seguir
 
Possibilidades com python
Possibilidades com pythonPossibilidades com python
Possibilidades com python
 
Python Workshop
Python WorkshopPython Workshop
Python Workshop
 
Computer Vision in Academia and Industry (Dmytro Mishkin Technology Stream)
Computer Vision in Academia and Industry (Dmytro Mishkin Technology Stream)Computer Vision in Academia and Industry (Dmytro Mishkin Technology Stream)
Computer Vision in Academia and Industry (Dmytro Mishkin Technology Stream)
 
Porque aprender haskell me fez um programador python melhor?
Porque aprender haskell me fez um programador python melhor?Porque aprender haskell me fez um programador python melhor?
Porque aprender haskell me fez um programador python melhor?
 
Python simplecv
Python simplecvPython simplecv
Python simplecv
 
Apresentação Monografia - Máquina de Comitê para previsão do preço médio diár...
Apresentação Monografia - Máquina de Comitê para previsão do preço médio diár...Apresentação Monografia - Máquina de Comitê para previsão do preço médio diár...
Apresentação Monografia - Máquina de Comitê para previsão do preço médio diár...
 
Grails from scratch
Grails from scratchGrails from scratch
Grails from scratch
 
Notion de fonction en Python
Notion de fonction en PythonNotion de fonction en Python
Notion de fonction en Python
 

Ähnlich wie Are Java Programmers Transitioning to Multicore?

Open source evolution analysis
Open source evolution analysisOpen source evolution analysis
Open source evolution analysisIzzat Alsmadi
 
Issues in implementation of parallel
Issues in implementation of parallelIssues in implementation of parallel
Issues in implementation of parallelijcseit
 
Introduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaIntroduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaopenseesdays
 
Thesies_Cheng_Guo_2015_fina_signed
Thesies_Cheng_Guo_2015_fina_signedThesies_Cheng_Guo_2015_fina_signed
Thesies_Cheng_Guo_2015_fina_signedCheng Guo
 
Concurrency Issues in Object-Oriented Modeling
Concurrency Issues in Object-Oriented ModelingConcurrency Issues in Object-Oriented Modeling
Concurrency Issues in Object-Oriented ModelingIRJET Journal
 
UniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtimeUniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtimeLee Calcote
 
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringA Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringRaffi Khatchadourian
 
Containers in Science: neuroimaging use cases
Containers in Science: neuroimaging use casesContainers in Science: neuroimaging use cases
Containers in Science: neuroimaging use casesKrzysztof Gorgolewski
 
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINESISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINESijcseit
 
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINESISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINESijcseit
 
A novel approach based on topic
A novel approach based on topicA novel approach based on topic
A novel approach based on topiccsandit
 
Parsl: Pervasive Parallel Programming in Python
Parsl: Pervasive Parallel Programming in PythonParsl: Pervasive Parallel Programming in Python
Parsl: Pervasive Parallel Programming in PythonDaniel S. Katz
 
Emotion recognition from facial expression using fuzzy logic
Emotion recognition from facial expression using fuzzy logicEmotion recognition from facial expression using fuzzy logic
Emotion recognition from facial expression using fuzzy logicFinalyear Projects
 
Finding Bad Code Smells with Neural Network Models
Finding Bad Code Smells with Neural Network Models Finding Bad Code Smells with Neural Network Models
Finding Bad Code Smells with Neural Network Models IJECEIAES
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computingbutest
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computingbutest
 
Towards high performance computing(hpc) through parallel programming paradigm...
Towards high performance computing(hpc) through parallel programming paradigm...Towards high performance computing(hpc) through parallel programming paradigm...
Towards high performance computing(hpc) through parallel programming paradigm...ijpla
 

Ähnlich wie Are Java Programmers Transitioning to Multicore? (20)

Open source evolution analysis
Open source evolution analysisOpen source evolution analysis
Open source evolution analysis
 
INTRODUCTION TO JAVA
INTRODUCTION TO JAVAINTRODUCTION TO JAVA
INTRODUCTION TO JAVA
 
Issues in implementation of parallel
Issues in implementation of parallelIssues in implementation of parallel
Issues in implementation of parallel
 
Introduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaIntroduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKenna
 
Thesies_Cheng_Guo_2015_fina_signed
Thesies_Cheng_Guo_2015_fina_signedThesies_Cheng_Guo_2015_fina_signed
Thesies_Cheng_Guo_2015_fina_signed
 
Concurrency Issues in Object-Oriented Modeling
Concurrency Issues in Object-Oriented ModelingConcurrency Issues in Object-Oriented Modeling
Concurrency Issues in Object-Oriented Modeling
 
UniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtimeUniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtime
 
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringA Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
 
Zap Scanning
Zap ScanningZap Scanning
Zap Scanning
 
Containers in Science: neuroimaging use cases
Containers in Science: neuroimaging use casesContainers in Science: neuroimaging use cases
Containers in Science: neuroimaging use cases
 
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINESISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
 
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINESISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
ISSUES IN IMPLEMENTATION OF PARALLEL PARSING ON MULTI-CORE MACHINES
 
A novel approach based on topic
A novel approach based on topicA novel approach based on topic
A novel approach based on topic
 
Enase20.ppt
Enase20.pptEnase20.ppt
Enase20.ppt
 
Parsl: Pervasive Parallel Programming in Python
Parsl: Pervasive Parallel Programming in PythonParsl: Pervasive Parallel Programming in Python
Parsl: Pervasive Parallel Programming in Python
 
Emotion recognition from facial expression using fuzzy logic
Emotion recognition from facial expression using fuzzy logicEmotion recognition from facial expression using fuzzy logic
Emotion recognition from facial expression using fuzzy logic
 
Finding Bad Code Smells with Neural Network Models
Finding Bad Code Smells with Neural Network Models Finding Bad Code Smells with Neural Network Models
Finding Bad Code Smells with Neural Network Models
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Towards high performance computing(hpc) through parallel programming paradigm...
Towards high performance computing(hpc) through parallel programming paradigm...Towards high performance computing(hpc) through parallel programming paradigm...
Towards high performance computing(hpc) through parallel programming paradigm...
 

Kürzlich hochgeladen

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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
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
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Kürzlich hochgeladen (20)

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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Are Java Programmers Transitioning to Multicore?

  • 1. Are Java Programmers Transitioning to Multicore? A Large Scale Study of Java FLOSS Weslley Torres Gustavo Pinto Benito Fernandes Jo˜o Paulo Oliveira a Filipe Ximenes Fernando Castor Informatics Center - Federal University of Pernambuco October 23, 2011 SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 2. Introduction Problem 1. In spite of multicore and... 2. many languages providing constructs for concurrent programming... 3. we have no idea about how developers use these constructs in practice. SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 3. Introduction Problem 1. In spite of multicore and... 2. many languages providing constructs for concurrent programming... 3. we have no idea about how developers use these constructs in practice. Our Study 1. A study targeting a large-scale FLOSS repository 2. To discover what concurrency mechanisms programmers use. 3. The frequency of use and system evolution along time. SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 4. Introduction Implications for Research and Practice 1. Researchers 1.1 To design new mechanisms. 1.2 To improve existing ones, based on development practice. 2. Software Developers : Might lead to more efficient use of existing abstractions 3. It is important to know! SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 5. Introduction Implications for Research and Practice 1. Researchers 1.1 To design new mechanisms. 1.2 To improve existing ones, based on development practice. 2. Software Developers : Might lead to more efficient use of existing abstractions 3. It is important to know! Why Java? 1. Widely used object-oriented programming language. 2. Supports for multi-threading (low level and high level). 3. Programming language with more projects at SourceForge (46.665 rojects). SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 6. Research Questions Two dimensions: Spatial and Temporal RQ1 - How often are the Java concurrency constructs employed in real applications? RQ2 - Are programmers aware about the transition from singlecore to multicore? SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 7. RQ1 - Metrics Metric Category Element Concurrent Instantiations of BlockingQueue,ConcurrentMap, collections SynchronousQueue, ConcurrentHashMap, Synchronized Occurrences of synchronized methods and blocks. Atomic data Uses of AtomicInteger, types AtomicLong, and AtomicBoolean Barriers Uses of CyclicBarrier and CountDownLatch Locks Instantiations of LockSupport, ReentrantLock Others extends Thread/Runnable, implements Runnable import java.util.concurrent (and its subpackages) Size Lines of Code Table: Some Metrics SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 8. RQ2 - Are programmers aware about the transition from singlecore to multicore? We have broken this question into three more: RQ2.1 - Are developers employing more concurrent programming constructs? RQ2.2 - Are developers wasting opportunities to use j.u.c.? RQ2.3 - Have threads been used to improve concurrency or parallelism? SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 9. Intrastructure Only projects with some version released after 2004 Many projects were discarded SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 10. General information #Projects (subprojects included) 2.343 #Small concurrent projects 1.300 #Small non-concurrent projects 489 #Medium concurrent projects 635 #Medium non-concurrent projects 32 #Big concurrent projects 199 #Big non-concurrent projects 0 # of LoC of the last version of the biggest project 1.702.972 Size on disk (all versions of all projects) 124GB Table: General information about the projects. SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 11. RQ1 - How often are the Java concurrency constructs employed in real applications? Metrics Median Mean Std. Dev. #Projects #1 4 14 51 11.2 39.47 119.7 22.56 65.88 189.73 703 535 189 #2 6 24 90 12.6 50.53 152.3 20.07 74.02 188.66 941 586 196 #3 1.5 3 6 2.41 4.8 9.46 2.17 6.07 11.32 520 399 152 #4 2 3 6 2.71 6.38 13.04 3.02 10.3 17.8 596 416 168 #5 1 2 1 1.91 2.86 6.05 1.24 3.60 14.17 6 9 17 Table: Metricts by categories (small/medium/big projects, respectively) where: #1: synchronized blocks #4: implementing Runnable #2: synchronized methods #5: interfaces extending #3: classes extending Runnable Thread SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 12. RQ1 - How often are the Java concurrency constructs employed in real applications? metrics Median Mean Std. Dev. #Projects #1 2 3 6 3.07 9.05 16.02 2.71 16.16 21.63 39 70 47 #2 1 2 4 2.32 7.17 6.77 3.48 17.91 8.70 43 82 53 #3 2 2 2 3.80 3.61 2.88 3.83 3.79 2.26 31 42 26 #4 2 3 4 3.17 7.12 13.07 4.12 11.17 21.01 86 97 61 #5 2 2 3 2.25 6.44 5.8 1.81 26.35 8.07 71 92 60 Table: Metricts by categories (small/medium/big projects, respectively) where: #1: atomic data types #4: concurrent collections #2: locks #5: executors #3: futures SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 13. Some facts 49% of the big concurrent projects, 32.4% of the medium ones, and only 15.5% of the small ones employ java.util.concurrent For synchronized blocks, the percentages are 94.97%, 84.64%, and 54.07%, respectively SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 14. Some facts 49% of the big concurrent projects, 32.4% of the medium ones, and only 15.5% of the small ones employ java.util.concurrent For synchronized blocks, the percentages are 94.97%, 84.64%, and 54.07%, respectively 139 projects define threads but do not use synchronized Often worker threads in small (< 10KLoC) projects SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 15. Some facts 49% of the big concurrent projects, 32.4% of the medium ones, and only 15.5% of the small ones employ java.util.concurrent For synchronized blocks, the percentages are 94.97%, 84.64%, and 54.07%, respectively 139 projects define threads but do not use synchronized Often worker threads in small (< 10KLoC) projects 44 projects employ the java.util.concurrent library but not the synchronized keyword 10% of the analyzed projects employ concurrent collections, particularly ConcurrentHashMap SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 16. RQ2.1 – Usage of the synchronized keyword Per 100KLoC SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 17. RQ2.1 – Usage of atomic data types Per 100KLoC SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 18. RQ2.1 – Usage of concurrent collections Per 100KLoC – Mainly ConcurrentHashMap SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 19. RQ2.1 – Usage of executors Per 100KLoC – Mainly thread pools SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 20. Are developers wasting opportunities to use j.u.c.? Methodology 1. Randomly chosen 100 projects out of all the 1830 concurrent projects. 2. Randomly collected 1–3 examples of the use of the synchronized keyword in these projects. 3. Analyzed 276 examples of synchronized usage. Some systems had fewer than 3 occurrences of synchronized. SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 21. Are developers wasting opportunities to use j.u.c.? Results 1. We found 28 cases where the use of synchronized could be avoided in 25 projects. 2. 40% of these projects already use j.u.c. somehow. 3. In most cases, the synchronized keyword cannot be removed because of the complexity of the operations. SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 22. RQ2.3: Concurrency vs. Parallelism Still much work to do. Existing systems seem to be getting more concurrent But not much... Some (e.g., Lucene) are also getting more parallel SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 23. RQ2.3: Concurrency vs. Parallelism Still much work to do. Existing systems seem to be getting more concurrent But not much... Some (e.g., Lucene) are also getting more parallel How can we know for sure? SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 24. RQ2.3: Concurrency vs. Parallelism Still much work to do. Existing systems seem to be getting more concurrent But not much... Some (e.g., Lucene) are also getting more parallel How can we know for sure? Suggestions? SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 25. Future Work Threads for Concurrency vs. Threads for Parallelism SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 26. Future Work Threads for Concurrency vs. Threads for Parallelism Atomic Data Types for actual variables instead of specific pieces of code. SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 27. Future Work Threads for Concurrency vs. Threads for Parallelism Atomic Data Types for actual variables instead of specific pieces of code. To investigate the organization of concurrency code in the analyzed projects. SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 28. Thank you SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 29. Why the Web and not a version control system? SourceForge’s SVN repositories do not have a fixed structure It is difficult to know whether a given version is a release or a development version Difficult to know what is an actual version SourceForge projects employ more than one kind of repository On the other hand, SourceForge’s Web site organizes things somewhat SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 30. Metric Category Element Thread methods Calls to interrupt, join, run, setDaemon, sleep, yield, and getContextLoader Object methods Calls to wait, notify, notifyAll Concurrent Instantiations of BlockingQueue, collections ArrayBlockingQueue, ConcurrentMap, LinkedBlockingDeque, LinkedBlockingQueue, LinkedTransferQueue, PriorityBlockingQueue, SynchronousQueue, ConcurrentHashMap, DelayQueue, ConcurrentSkipListMap Synchronized Occurrences of synchronized methods and keyword blocks. Executors Uses of ExecutorService, ForkJoinPool, Executor, Executors, ScheduledExecutorService, AbstractExecutorService, ThreadPoolExecutor, ScheduledThreadPoolExecutor Table: List of metrics SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 31. Metric Category Element Atomic data Uses of AtomicInteger, types AtomicLong, and AtomicBoolean Barriers Uses of CyclicBarrier and CountDownLatch Futures Uses of Future, Response, RunnableFuture RunnableScheduledFuture, ScheduledFuture, FutureTask, ForkJoinTask, RecursiveAction, RecursiveTask, SwingWorker Locks Instantiations of LockSupport, ReentrantLock, ReentrantReadWriteLock, ReentrantReadWriteLockReadLock, ReentrantReadWriteLockWriteLock Others extends Thread/Runnable, implements Runnable, volatile modifier, import java.util.concurrent (and its subpackages) Size L of Code Table: List of metrics SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.
  • 32. RQ1 - How often are the Java concurrency constructs employed in real applications? ALL PROJECTS metrics Median Mean Std. Dev. #Projects #1 108.77 223.81 362.21 1634 #2 12.23 25.63 39.08 924 #3 2.97 8.83 12.41 40 #4 14.26 32.52 52.42 1031 #5 31.17 91.85 195.61 470 Table: Metricts per 100KLOC where: #1: synchronized keywords #4: implements runnable #2: extends thread #5: use of j.u.c. #3: extends runnable SPLASH’2011 Workshop on Transitioning to Multicore. Portland, USA, October 23nd 2011.