Gustavo Pinto
Federal University of Pará
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Gustavo Pinto.
mining software repositories | 2014
Gustavo Pinto; Fernando Castor; Yu David Liu
A growing number of software solutions have been proposed to address application-level energy consumption problems in the last few years. However, little is known about how much software developers are concerned about energy consumption, what aspects of energy consumption they consider important, and what solutions they have in mind for improving energy efficiency. In this paper we present the first empirical study on understanding the views of application programmers on software energy consumption problems. Using StackOverflow as our primary data source, we analyze a carefully curated sample of more than 300 questions and 550 answers from more than 800 users. With this data, we observed a number of interesting findings. Our study shows that practitioners are aware of the energy consumption problems: the questions they ask are not only diverse -- we found 5 main themes of questions -- but also often more interesting and challenging when compared to the control question set. Even though energy consumption-related questions are popular when considering a number of different popularity measures, the same cannot be said about the quality of their answers. In addition, we observed that some of these answers are often flawed or vague. We contrast the advice provided by these answers with the state-of-the-art research on energy consumption. Our summary of software energy consumption problems may help researchers focus on what matters the most to software developers and end users.
fundamental approaches to software engineering | 2015
Kenan Liu; Gustavo Pinto; Yu David Liu
Empowering application programmers to make energy-aware decisions is a critical dimension of energy optimization for computer systems. In this paper, we study the energy impact of alternative data management choices by programmers, such as data access patterns, data precision choices, and data organization. Second, we attempt to build a bridge between application-level energy management and hardware-level energy management, by elucidating how various application-level data management features respond to Dynamic Voltage and Frequency Scaling (DVFS). Finally, we apply our findings to real-world applications, demonstrating their potential for guiding application-level energy optimization. The empirical study is particularly relevant in the Big Data era, where data-intensive applications are large energy consumers, and their energy efficiency is strongly correlated to how data are maintained and handled in programs.
Journal of Systems and Software | 2015
Gustavo Pinto; Weslley Torres; Benito Fernandes; Fernando Castor; Roberto Souto Maior de Barros
An analysis of 2227 Java projects, comprising more than 650 million lines of code.Seventy seven percent of the projects create threads or employ a concurrency control mechanism.Concurrent programming constructs are used both frequently and intensively.Adoption of java.util.concurrent is moderate (23% of the concurrent projects use it).Efficient and safe data structures, e.g., ConcurrentHashMap, are not yet widely used. In both academia and industry, there is a strong belief that multicore technology will radically change the way software is built. However, little is known about the current state of use of concurrent programming constructs. In this work we present an empirical work aimed at studying the usage of concurrent programming constructs of 2227 real world, stable and mature Java projects from SourceForge. We have studied the usage of concurrent techniques in the most recent versions of these applications and also how usage has evolved along time. The main findings of our study are: (I) More than 75% of the latest versions of the projects either explicitly create threads or employ some concurrency control mechanism. (II) More than half of these projects exhibit at least 47 synchronized methods and 3 implementations of the Runnable interface per 100,000 LoC, which means that not only concurrent programming constructs are used often but they are also employed intensively. (III) The adoption of the java.util.concurrent library is only moderate (approximately 23% of the concurrent projects employ it). (IV) Efficient and thread-safe data structures, such as ConcurrentHashMap, are not yet widely used, despite the fact that they present numerous advantages.
acm conference on systems programming languages and applications software for humanity | 2013
Gustavo Pinto; Fernando Kamei
Programmers often use forums, such as StackOverflow, to easily and quickly solve their issues. Researchers then investigate those questions to better understand the state-of-use of software engineering techniques. Also, due to the quality and the great number questions and answers, the results found using such method might be difficult, or even impossible, to find using common survey techniques. In this study, we conducted a qualitative and quantitative research in order to categorize questions about refactoring tools. As a result, we presented a comprehensive classification of flaws and desirable features in refactoring tools. We also reported that programmers do not often rely on refactoring tools, but, at the same time, they are desiring number of unimplemented features.
acm conference on systems programming languages and applications software for humanity | 2011
Weslley Torres; Gustavo Pinto; Benito Fernandes; João Paulo Segundo de Paiva Oliveira; Filipe Alencar Ximenes; Fernando Castor
We would like to know if Java developers are retrofitting applications to become concurrent and, to get better performance on multicore machines. Also, we would like to know what concurrent programming constructs they currently use. Evidence of how programmers write concurrent programs can help other programmers to be more efficient when using the available constructs. Moreover, this evidence can assist researchers in devising new mechanisms and improving existing ones. For this purpose, we have conducted a study targeting a large-scale Java open source repository, SourceForge. We have analyzed a number of FLOSS projects along two dimensions: spatial and temporal. For the spatial dimension, we studied the latest versions of more than 2000 projects. Our goal is to understand which constructs developers of concurrent systems employ and how frequently they use them. For the temporal dimension we took a closer look at various versions of six projects and analyzed how the use of concurrency constructs has evolved over time. In addition, we tried to establish if uses of concurrency control constructs were aimed at leveraging multicore processors. We have downloaded more than two thousand Java projects including their various versions, in addition to individual analysing about six well known open-source projects.
international conference on software maintenance | 2016
Gustavo Pinto; Kenan Liu; Fernando Castor; Yu David Liu
Java programmers are served with numerous choices of collections, varying from simple sequential ordered lists to sophisticated hashtable implementations. These choices are well-known to have different characteristics in terms of performance, scalability, and thread-safety, and most of them are well studied. This paper analyzes an additional dimension, energy efficiency. We conducted an empirical investigation of 16 collection implementations (13 thread-safe, 3 non-thread-safe) grouped under 3 commonly used forms of collections (lists, sets, and mappings). Using micro-and real world-benchmarks (Tomcat and Xalan), we show that our results are meaningful and impactful. In general, we observed that simple design decisions can greatly impact energy consumption. In particular, we found that using a newer hashtable version can yield a 2.19x energy savings in the micro-benchmarks and up to 17% in the real world-benchmarks, when compared to the old associative implementation. Also, we observed that different implementations of the same thread-safe collection can have widely different energy consumption behaviors. This variation also applies to the different operations that each collection implements, e.g, a collection implementation that performs traversals very efficiently can be more than an order of magnitude less efficient than another implementation of the same collection when it comes to insertions.
Communications of The ACM | 2017
Gustavo Pinto; Fernando Castor
Development of energy-efficient software is hindered by a lack of knowledge and a lack of tools.
evaluation and usability of programming languages and tools | 2015
Gustavo Pinto; Weslley Torres; Fernando Castor
Concurrent programming is notably known as a hard discipline. Over the last few years, great strides have been made in improving concurrent programming abstractions, techniques, and tools to ease concurrent programming practice. However, little effort has been placed on assessing what are the real-world problems faced by developers when writing concurrent applications. In this paper, we describe an empirical investigation of the top-250 most popular questions about concurrent programming on StackOverflow. We observed that even though some questions (22.94%) are related to practical problems (e.g., “how to fix this concurrency bug”), most of them (66.23%) are related to basic concepts (e.g., “what is a mutex?”), which were created by well- experienced StackOverflow users. Curiously, we did not find any question about how to use concurrent programming techniques to improve application performance.
acm conference on systems programming languages and applications software for humanity | 2013
Gustavo Pinto; Fernando Castor
Our study analyzed the performance and energy consumption of multicore applications, using a number of techniques to manage concurrent execution. We concluded that language constructs for concurrent execution can impact energy consumption. Nonetheless, the tradeoff between performance and energy consumption in multicore applications is not as obvious as it seems.
international conference on software engineering | 2018
Mauricio Finavaro Aniche; Christoph Treude; Igor Steinmacher; Igor Scaliante Wiese; Gustavo Pinto; Margaret-Anne D. Storey; Marco Aurélio Gerosa
Many developers rely on modern news aggregator sites such as reddit and hn to stay up to date with the latest technological developments and trends. In order to understand what motivates developers to contribute, what kind of content is shared, and how knowledge is shaped by the community, we interviewed and surveyed developers that participate on the reddit programming subreddit and we analyzed a sample of posts on both reddit and hn. We learned what kind of content is shared in these websites and developer motivations for posting, sharing, discussing, evaluating, and aggregating knowledge on these aggregators, while revealing challenges developers face in terms of how content and participant behavior is moderated. Our insights aim to improve the practices developers follow when using news aggregators, as well as guide tool makers on how to improve their tools. Our findings are also relevant to researchers that study developer communities of practice.