# Writing Efficient Programs in R (and Beyond)

Save this PDF as:

Size: px
Start display at page:

## Transcription

1 Writing Efficient Programs in R (and Beyond) Ross Ihaka, Duncan Temple Lang, Brendan McArdle The University of Auckland The University of California, Davis

2

3 Example: Generating a 2d Simple Random Walk A two dimensional (discrete) random walk can be defined as follows: Start at the point (0, 0). For i = 1, 2, 3,... take a unit step in a randomly chosen direction; N, S, E, W. It is possible to theory to study such a random walk, but it is also useful to use simulation to study the properties of random walks.

4 The sample Function A virtual lotto ticket line. > sample(1:40, 7) [1] Sampling with replacement. > sample(1:40, 7, replace = TRUE) [1] Sample random directions and step sizes. > sample(c(true, FALSE), 1) [1] TRUE > sample(c(-1, 1), 1) [1] -1

5 Version One: Naive Implementation In this version we ll write the program the way a C, C++ or Java programmer might. This means running a loop and generating the values one a time. At the heart of the program we have to choose a direction (x or y) to step in and an step-size (either +1 or 1). These random choices are made using the sample function.

6 Version One: R Code > rw2d1 = function(n) { xpos = ypos = numeric(n) xdir = c(true, FALSE) pm1 = c(1, -1) for(i in 2:n) if (sample(xdir, 1)) { xpos[i] = xpos[i-1] + sample(pm1, 1) ypos[i] = ypos[i-1] } else { xpos[i] = xpos[i-1] ypos[i] = ypos[i-1] + sample(pm1, 1) } list(x = xpos, y = ypos) }

7 Performance We can time the performance of this algorithm using the system.time function. > system.time(rw2d1(100000)) user system elapsed We ll use this figure as a baseline for comparison with other methods we ll develop later.

8 Version Two: Vectorisation Rather than computing the position element by element, this version computes the vectors of position changes and then uses cumsum to compute the positions. To compute n positions we need n 1 position changes. The step sizes can be computed as steps = sample(c(-1, 1), n - 1, replace = TRUE) and whether or not to step in the x direction can be determined as xdir = sample(c(true, FALSE), n - 1, replace = TRUE)

9 Version Two: R Code > rw2d2 = function(n) { steps = sample(c(-1, 1), n - 1, replace = TRUE) xdir = sample(c(true, FALSE), n - 1, replace = TRUE) xpos = c(0, cumsum(ifelse(xdir, steps, 0))) ypos = c(0, cumsum(ifelse(xdir, 0, steps))) list(x = xpos, y = ypos) }

10 Version Two: R Code > rw2d2 = function(n) { steps = sample(c(-1, 1), n - 1, replace = TRUE) xdir = sample(c(true, FALSE), n - 1, replace = TRUE) xpos = c(0, cumsum(ifelse(xdir, steps, 0))) ypos = c(0, cumsum(ifelse(xdir, 0, steps))) list(x = xpos, y = ypos) } > system.time(rw2d2(100000)) user system elapsed This is 1/19 the elapsed time taken by the baseline version. Vectorisation clearly makes a huge difference to run times.

11 Version Three: Heavy Vectorisation A potential problem with the previous version is the use of the ifelse function to deal with the x and y directions separately. As a final improvement let s deal with the four step directions separately and simply choose one of the four directions at random. The directions can be chosen via dirs = sample(1:4, n - 1, replace = TRUE) and this can then be used to select the appropriate increments in the x and y directions from precomputed vectors.

12 Version Three: R Code > rw2d3 = function(n) { xsteps = c(-1, 1, 0, 0) ysteps = c( 0, 0, -1, 1) dir = sample(1:4, n - 1, replace = TRUE) xpos = c(0, cumsum(xsteps[dir])) ypos = c(0, cumsum(ysteps[dir])) list(x = xpos, y = ypos) }

13 Version Three: R Code > rw2d3 = function(n) { xsteps = c(-1, 1, 0, 0) ysteps = c( 0, 0, -1, 1) dir = sample(1:4, n - 1, replace = TRUE) xpos = c(0, cumsum(xsteps[dir])) ypos = c(0, cumsum(ysteps[dir])) list(x = xpos, y = ypos) } > system.time(rw2d3(100000)) user system elapsed This has cut the running time to about 1/9 of the previous version and 1/170 of the baseline version.

14 Profiling Profiling is a useful tool which can be used to find out how much time is being spent inside each function when some R code is run. When profiling is turned on, R gathers information on where the program is at regularly spaced time points (20 millisecond separation by default) and stores the information in a file. After profiling is turned off the information stored in the file can be analysed to produce a summary of how much time is spent in each function. It can be quite surprising to find out just where R is spending its time and this can help to find ways to make programs run faster.

15 Profiling Example The following code will enable use to find out where R is spending its time when running the rw2d2 function. Because the process is statistical we ll run the function a number of times to ensure that enough data is being gathered. > Rprof() > for(i in 1:100) pos = rw2d2(100000) > Rprof(NULL)

16 Profiling Analysis > prof = summaryrprof() > prof\$by.self[1:5,] self.time self.pct total.time total.pct "ifelse" "&" "sample" "!" "cumsum" % of the time is being spent in the ifelse function (and calls made to other R functions from inside the ifelse function). This explains why removing the ifelse calls has such a big effect.

17 Lessons Producing efficient programs in R requires thought and experimentation. In general, vectorisation is a big win and converting loops into vectorised alternatives almost always pays off. Code profiling can give a way to locate those parts of a program which will benefit most from optimisation. Unfortunately, it is not always possible to produce efficient programs using vectorisation.

18 Directions for New Research There are new high-level languages which which produce very efficient code by using careful code analysis and transformation. SaC Single assignment C (University of Kiel) CT C for Throughput Computing (Intel) These languages are not interactive. Whether it is possible to bring the techniques used by these languages to an interactive languages is an open question. The other alternative is to try to make naively written programs run fast. How to do this in an interactive language is an open question.

19 A Quick Progress Report We believe that it is possible to make naively specified programs in a language not unlike R run much faster than R (up to 600 times faster for some problems). Integrating this with method-dispatch in object-oriented languages is tricky, but looks possible. This is not going to be enough to take advantage of the potential offered by the parallel processing architectures now becoming available. To harness that potential, the techniques used in languages like Sac and CT must be used. It is not clear whether this is possible in interactive languages.

### Back to the Future: Lisp as a Base for a Statistical Computing System

Back to the Future: Lisp as a Base for a Statistical Computing System Ross Ihaka 1 and Duncan Temple Lang 2 1 University of Auckland, New Zealand, ihaka@stat.auckland.ac.nz 2 University of California,

### Lecture 3: Loops. While Loops. While Loops: Newton-Raphson Method. While Loops: Powers of Two

While Loops Lecture 3: Loops The while loop is a common repetition structure. Check loop-continuation condition. Execute a sequence of statements. Repeat. while (boolean expression) statement; while loop

### Parallel Computing with R. Le Yan LSU

Parallel Computing with Le Yan HPC @ LSU 11/1/2017 HPC training series Fall 2017 Parallel Computing: Why? Getting results faster unning in parallel may speed up the time to reach solution Dealing with

### Sorting: Given a list A with n elements possessing a total order, return a list with the same elements in non-decreasing order.

Sorting The sorting problem is defined as follows: Sorting: Given a list A with n elements possessing a total order, return a list with the same elements in non-decreasing order. Remember that total order

### Chapter 3. Iteration

Chapter 3 Iteration Iteration Iteration is the form of program control that allows us to repeat a section of code. For this reason this form of control is often also referred to as repetition. The programming

### 1.3 Conditionals and Loops

A Foundation for Programming 1.3 Conditionals and Loops any program you might want to write objects functions and modules graphics, sound, and image I/O arrays conditionals and loops Math primitive data

### SECURITY AUTOMATION BEST PRACTICES. A Guide on Making Your Security Team Successful with Automation SECURITY AUTOMATION BEST PRACTICES - 1

SECURITY AUTOMATION BEST PRACTICES A Guide on Making Your Security Team Successful with Automation SECURITY AUTOMATION BEST PRACTICES - 1 Introduction The best security postures are those that are built

### Exsys RuleBook Selector Tutorial. Copyright 2004 EXSYS Inc. All right reserved. Printed in the United States of America.

Exsys RuleBook Selector Tutorial Copyright 2004 EXSYS Inc. All right reserved. Printed in the United States of America. This documentation, as well as the software described in it, is furnished under license

### ! Sequence of statements that are actually executed in a program. ! Conditionals and loops: enable us to choreograph control flow.

Control Flow 1.3 Conditionals and Loops Control flow.! Sequence of statements that are actually executed in a program.! Conditionals and loops: enable us to choreograph control flow. statement 1 boolean

### More on Conjunctive Selection Condition and Branch Prediction

More on Conjunctive Selection Condition and Branch Prediction CS764 Class Project - Fall Jichuan Chang and Nikhil Gupta {chang,nikhil}@cs.wisc.edu Abstract Traditionally, database applications have focused

### Flexible Programming of Hierarchical Modeling Algorithms and Compilation of R Using NIMBLE

Flexible Programming of Hierarchical Modeling Algorithms and Compilation of R Using NIMBLE Christopher Paciorek UC Berkeley Statistics Joint work with: Perry de Valpine (PI) UC Berkeley Environmental Science,

### Beyond R? The Evolution of Statistical Computing Environments

Beyond R? The Evolution of Statistical Computing Environments Jay is Associate Professor of Statistics, Yale University Mike submitted his dissertation on August 31, 2010, and is now Research Faculty,

### Weka ( )

Weka ( http://www.cs.waikato.ac.nz/ml/weka/ ) The phases in which classifier s design can be divided are reflected in WEKA s Explorer structure: Data pre-processing (filtering) and representation Supervised

### SELECTION. (Chapter 2)

SELECTION (Chapter 2) Selection Very often you will want your programs to make choices among different groups of instructions For example, a program processing requests for airline tickets could have the

### Name: Checked: Preparation: Response time experiment accessing the system clock

Lab 9 Name: Checked: Objectives: Practice using the conditional operator; switch statements; do and for loops. Explore the use of dialog boxes (JOptionPane) and learn how to implement a simple experimental

### Google: How does it work?

Google: How does it work? Jonathan M. Burgess In 1998, two Stanford University students, Larry Page and Sergey Brin, created Google, an Internet search engine. Their success was founded in the fact that

### The Design Process. General Development Issues. C/C++ and OO Rules of Thumb. Home

A l l e n I. H o l u b & A s s o c i a t e s Home C/C++ and OO Rules of Thumb The following list is essentially the table of contents for my book Enough Rope to Shoot Yourself in the Foot (McGraw-Hill,

### LCC 6310 The Computer as an Expressive Medium. Lecture 9

LCC 6310 The Computer as an Expressive Medium Lecture 9 Overview Course pace Programming questions related to project 2? (due Friday 5pm!) Programming concepts super and this Java SDK classes Lists Reading

### Sorting is a problem for which we can prove a non-trivial lower bound.

Sorting The sorting problem is defined as follows: Sorting: Given a list a with n elements possessing a total order, return a list with the same elements in non-decreasing order. Remember that total order

### Announcements. Program #1. Program #0. Reading. Is due at 9:00 AM on Thursday. Re-grade requests are due by Monday at 11:59:59 PM.

Program #1 Announcements Is due at 9:00 AM on Thursday Program #0 Re-grade requests are due by Monday at 11:59:59 PM Reading Chapter 6 1 CPU Scheduling Manage CPU to achieve several objectives: maximize

### Performance: It s harder than you d think to go fast

Performance: It s harder than you d think to go fast Dan S. Wallach and Mack Joyner, Rice University Copyright 2016 Dan Wallach, All Rights Reserved Today s lecture Prime number generation Several different

### In this chapter: What is an array? Declaring an array. Initialization. Array operations using the for loop with an array. Arrays of objects.

9 Arrays Arrays 141 I might repeat to myself slowly and soothingly, a list of quotations beautiful from minds profound if I can remember any of the damn things. Dorothy Parker In this chapter: What is

### Balancing the pressures of a healthcare SQL Server DBA

Balancing the pressures of a healthcare SQL Server DBA More than security, compliance and auditing? Working with SQL Server in the healthcare industry presents many unique challenges. The majority of these

### // a stack is printed from bottom (leftmost) to top (rightmost) System.out.println(stk);

CompSci 100 Test 2 Spring 2011 Prof. Rodger April 14, 2011 Some common recurrence relations T(n) = T(n/2) +O(1) O(log n) T(n) = T(n/2) +O(n) O(n) T(n) = 2T(n/2) +O(1) O(n) T(n) = 2T(n/2) +O(n) O(n log

### Theory of 3-4 Heap. Examining Committee Prof. Tadao Takaoka Supervisor

Theory of 3-4 Heap A thesis submitted in partial fulfilment of the requirements for the Degree of Master of Science in the University of Canterbury by Tobias Bethlehem Examining Committee Prof. Tadao Takaoka

### Chapter Fourteen Bonus Lessons: Algorithms and Efficiency

: Algorithms and Efficiency The following lessons take a deeper look at Chapter 14 topics regarding algorithms, efficiency, and Big O measurements. They can be completed by AP students after Chapter 14.

### 1 State, objects, and abstraction

6.01, Spring Semester, 2008 Course notes for Week 4 1 MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Computer Science 6.01 Introduction to EECS I Spring Semester, 2008 Course

### Chapter 5: CPU Scheduling

Chapter 5: CPU Scheduling Basic Concepts Scheduling Criteria Scheduling Algorithms Thread Scheduling Multiple-Processor Scheduling Operating Systems Examples Algorithm Evaluation Chapter 5: CPU Scheduling

### CSc 372. Comparative Programming Languages. 36 : Scheme Conditional Expressions. Department of Computer Science University of Arizona

1/26 CSc 372 Comparative Programming Languages 36 : Scheme Conditional Expressions Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/26 Comparison

### A New Algorithm for Singleton Arc Consistency

A New Algorithm for Singleton Arc Consistency Roman Barták, Radek Erben Charles University, Institute for Theoretical Computer Science Malostranské nám. 2/25, 118 Praha 1, Czech Republic bartak@kti.mff.cuni.cz,

### The Operating System. Chapter 6

The Operating System Machine Level Chapter 6 1 Contemporary Multilevel Machines A six-level l computer. The support method for each level is indicated below it.2 Operating System Machine a) Operating System

### Easy Projects Custom Fields Infinite Possibilities

Easy Projects Custom Fields Infinite Possibilities Custom Fields are the Swiss Army Knife of Easy Projects! They greatly extend the capabilities of Easy Projects enabling you to capture and report on any

### Time Series prediction with Feed-Forward Neural Networks -A Beginners Guide and Tutorial for Neuroph. Laura E. Carter-Greaves

http://neuroph.sourceforge.net 1 Introduction Time Series prediction with Feed-Forward Neural Networks -A Beginners Guide and Tutorial for Neuroph Laura E. Carter-Greaves Neural networks have been applied

### Parallelization of FFT in AFNI

Parallelization of FFT in AFNI Huang, Jingshan and Xi, Hong Department of Computer Science and Engineering University of South Carolina Columbia, SC huang27@cse.sc.edu and xi@cse.sc.edu Abstract. AFNI

### Database Table Editor for Excel. by Brent Larsen

Database Table Editor for Excel by Brent Larsen Executive Summary This project is a database table editor that is geared toward those who use databases heavily, and in particular those who frequently insert,

### Basic Internet Skills

The Internet might seem intimidating at first - a vast global communications network with billions of webpages. But in this lesson, we simplify and explain the basics about the Internet using a conversational

### The importance of managing your data

The importance of managing your data White paper Only 20% of CRM implementations succeed. But why? It s all down to the data within in your CRM. Garbage in, garbage out as they say. If your data isn t

### Using Butterfly-Patterned Partial Sums to Draw from Discrete Distributions

Using Butterfly-Patterned Partial Sums to Draw from Discrete Distributions Guy L. Steele Jr. Software Architect Oracle Labs April 6, 2016 The image part with relationship Copyright 2016 Oracle and/or its

### CS3205 HCI IN SOFTWARE DEVELOPMENT INTRODUCTION TO PROTOTYPING. Tom Horton. * Material from: Floryan (UVa) Klemmer (UCSD, was at Stanford)

CS3205 HCI IN SOFTWARE DEVELOPMENT INTRODUCTION TO PROTOTYPING Tom Horton * Material from: Floryan (UVa) Klemmer (UCSD, was at Stanford) READINGS ID Book. Chapter 11 in published book, Design, Prototyping,

### Data Mining with Oracle 10g using Clustering and Classification Algorithms Nhamo Mdzingwa September 25, 2005

Data Mining with Oracle 10g using Clustering and Classification Algorithms Nhamo Mdzingwa September 25, 2005 Abstract Deciding on which algorithm to use, in terms of which is the most effective and accurate

### 5 The Control Structure Diagram (CSD)

5 The Control Structure Diagram (CSD) The Control Structure Diagram (CSD) is an algorithmic level diagram intended to improve the comprehensibility of source code by clearly depicting control constructs,

### Customizing Sweave to Produce Better Looking L A TEX Output

Customizing Sweave to Produce Better Looking L A TEX Output Ross Ihaka September 4, 2009 1 Why Customize? The default configuration of Sweave produces fairly ugly output I ve experimented quite a bit and

### G52CON: Concepts of Concurrency

G52CON: Concepts of Concurrency Lecture 11: Semaphores I" Brian Logan School of Computer Science bsl@cs.nott.ac.uk Outline of this lecture" problems with Peterson s algorithm semaphores implementing semaphores

### Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal

Administrivia Software Process CS169 Lecture 2 Added 20 more so far Will limit enrollment to ~65 students Only one TA so far Start thinking about project proposal Bonus points for proposals that will be

### google SEO UpdatE the RiSE Of NOt provided and hummingbird october 2013

google SEO Update The Rise of Not Provided and Hummingbird October 2013 Lead contributors David Freeman Head of SEO Havas Media UK david.freeman@havasmedia.com Winston Burton VP, Director of SEO Havas

### Chapter 3 - Simple JavaScript - Programming Basics. Lesson 1 - JavaScript: What is it and what does it look like?

Chapter 3 - Simple JavaScript - Programming Basics Lesson 1 - JavaScript: What is it and what does it look like? PP presentation JavaScript.ppt. Lab 3.1. Lesson 2 - JavaScript Comments, document.write(),

### Midterm Review Topics Java Basics and Structure Variables Branching Loops Methods Arrays. Midterm Review Kage Weiss Lab 001 TA, SPR 17

Midterm Review Topics Java Basics and Structure Variables Branching Loops Methods Arrays Midterm Review Kage Weiss Lab 001 TA, SPR 17 Java Basics and Structure Class{ class variables; methods{ method variables;

### Java Without the Jitter

TECHNOLOGY WHITE PAPER Achieving Ultra-Low Latency Table of Contents Executive Summary... 3 Introduction... 4 Why Java Pauses Can t Be Tuned Away.... 5 Modern Servers Have Huge Capacities Why Hasn t Latency

### Channels & Keyframes. CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2017

Channels & Keyframes CSE69: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 27 Animation Rigging and Animation Animation System Pose Φ... 2 N Rigging System Triangles Renderer Animation When

### Lesson 2. Introducing Apps. In this lesson, you ll unlock the true power of your computer by learning to use apps!

Lesson 2 Introducing Apps In this lesson, you ll unlock the true power of your computer by learning to use apps! So What Is an App?...258 Did Someone Say Free?... 259 The Microsoft Solitaire Collection

### CS1114: Matlab Introduction

CS1114: Matlab Introduction 1 Introduction The purpose of this introduction is to provide you a brief introduction to the features of Matlab that will be most relevant to your work in this course. Even

### DELL EMC DATA DOMAIN SISL SCALING ARCHITECTURE

WHITEPAPER DELL EMC DATA DOMAIN SISL SCALING ARCHITECTURE A Detailed Review ABSTRACT While tape has been the dominant storage medium for data protection for decades because of its low cost, it is steadily

Cuckoo Hashing for Undergraduates Rasmus Pagh IT University of Copenhagen March 27, 2006 Abstract This lecture note presents and analyses two simple hashing algorithms: Hashing with Chaining, and Cuckoo

### 3. Conditionals & Loops

Context: basic building blocks for programming any program you might want to write objects functions and modules graphics, sound, and image I/O arrays conditionals and loops conditionals loops Math primitive

### Processing Technology of Massive Human Health Data Based on Hadoop

6th International Conference on Machinery, Materials, Environment, Biotechnology and Computer (MMEBC 2016) Processing Technology of Massive Human Health Data Based on Hadoop Miao Liu1, a, Junsheng Yu1,

### Lab 9: Pointers and arrays

CMSC160 Intro to Algorithmic Design Blaheta Lab 9: Pointers and arrays 3 Nov 2011 As promised, we ll spend today working on using pointers and arrays, leading up to a game you ll write that heavily involves

### Lecture Programming in C++ PART 1. By Assistant Professor Dr. Ali Kattan

Lecture 08-1 Programming in C++ PART 1 By Assistant Professor Dr. Ali Kattan 1 The Conditional Operator The conditional operator is similar to the if..else statement but has a shorter format. This is useful

### Example: short timearray[] = {500, 400, 500, 400, 100, 200, 100, 200, -1};

Write a sketch that once you enter g for go it turns the LED on and off for the amount of time in an array. Have the program terminate when it reaches a negative value (as time is always positive). Example:

### Lecture 9 Dynamic Compilation

Lecture 9 Dynamic Compilation I. Motivation & Background II. Overview III. Compilation Policy IV. Partial Method Compilation V. Partial Dead Code Elimination VI. Escape Analysis VII. Results Partial Method

### CS112 Lecture: Loops

CS112 Lecture: Loops Objectives: Last revised 3/11/08 1. To introduce some while loop patterns 2. To introduce and motivate the java do.. while loop 3. To review the general form of the java for loop.

### DrupalGovcon July 20th, 2016

Agile Drupal 8 Builds: Doing the Most Without PHP DrupalGovcon July 20th, 2016 Matt Cheney & Molly Byrnes 1 Hello to Drupalcon Govcon My name is Matthew Cheney. I work on the magical platform that is Pantheon.

### 3. Conditionals & Loops

COMPUTER SCIENCE S E D G E W I C K / W A Y N E 3. Conditionals & Loops Section 1.3 http://introcs.cs.princeton.edu Context: basic building blocks for programming any program you might want to write objects

### CS 31: Intro to Systems Caching. Martin Gagne Swarthmore College March 23, 2017

CS 1: Intro to Systems Caching Martin Gagne Swarthmore College March 2, 2017 Recall A cache is a smaller, faster memory, that holds a subset of a larger (slower) memory We take advantage of locality to

### Short-Cut MCMC: An Alternative to Adaptation

Short-Cut MCMC: An Alternative to Adaptation Radford M. Neal Dept. of Statistics and Dept. of Computer Science University of Toronto http://www.cs.utoronto.ca/ radford/ Third Workshop on Monte Carlo Methods,

### Expert Guide to. Cognos Audit Data

Expert Guide to Cognos Audit Data Expert Guide to Cognos Audit Data 2 of 30 Table of Contents Chapter 1: Getting Started Chapter 2: The Basics Chapter 3: Working With Cognos Audit Data Chapter 4: What

### Program development plan

Appendix A Program development plan If you are spending a lot of time debugging, it is probably because you do not have an effective program development plan. A typical, bad program development plan goes

### Accelerating Foreign-Key Joins using Asymmetric Memory Channels

Accelerating Foreign-Key Joins using Asymmetric Memory Channels Holger Pirk Stefan Manegold Martin Kersten holger@cwi.nl manegold@cwi.nl mk@cwi.nl Why? Trivia: Joins are important But: Many Joins are (Indexed)

### Making USB Device Drivers Easier Using the HID Class

Making USB Device Drivers Easier Using the HID Class Stuart Allman Cypress Semiconductor 15050 Avenue of Science San Diego, CA 92128 (858) 613-7900 One of the major barriers that exist in the adoption

### OpenMP: Open Multiprocessing

OpenMP: Open Multiprocessing Erik Schnetter May 20-22, 2013, IHPC 2013, Iowa City 2,500 BC: Military Invents Parallelism Outline 1. Basic concepts, hardware architectures 2. OpenMP Programming 3. How to

### File System Forensics : Measuring Parameters of the ext4 File System

File System Forensics : Measuring Parameters of the ext4 File System Madhu Ramanathan Department of Computer Sciences, UW Madison madhurm@cs.wisc.edu Venkatesh Karthik Srinivasan Department of Computer

### Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur Lecture 06 Object-Oriented Analysis and Design Welcome

### Locate a Hotspot and Optimize It

Locate a Hotspot and Optimize It 1 Can Recompiling Just One File Make a Difference? Yes, in many cases it can! Often, you can get a major performance boost by recompiling a single file with the optimizing

### 1.3 Conditionals and Loops

1.3 Conditionals and Loops Introduction to Programming in Java: An Interdisciplinary Approach Robert Sedgewick and Kevin Wayne Copyright 2002 2010 15/1/2013 22:16:24 A Foundation for Programming any program

### LOW LATENCY DATA DISTRIBUTION IN CAPITAL MARKETS: GETTING IT RIGHT

LOW LATENCY DATA DISTRIBUTION IN CAPITAL MARKETS: GETTING IT RIGHT PATRICK KUSTER Head of Business Development, Enterprise Capabilities, Thomson Reuters +358 (40) 840 7788; patrick.kuster@thomsonreuters.com

### Computer Science Seminar. Whats the next big thing? Ruby? Python? Neither?

Computer Science Seminar Whats the next big thing? Ruby? Python? Neither? Introduction Seminar Style course unlike many computer science courses discussion important, encouraged and part of your grade

### CISC-124. This week we continued to look at some aspects of Java and how they relate to building reliable software.

CISC-124 20180129 20180130 20180201 This week we continued to look at some aspects of Java and how they relate to building reliable software. Multi-Dimensional Arrays Like most languages, Java permits

### PebblesDB: Building Key-Value Stores using Fragmented Log Structured Merge Trees

PebblesDB: Building Key-Value Stores using Fragmented Log Structured Merge Trees Pandian Raju 1, Rohan Kadekodi 1, Vijay Chidambaram 1,2, Ittai Abraham 2 1 The University of Texas at Austin 2 VMware Research

### Introduction to Embedded Systems. Lab Logistics

Introduction to Embedded Systems CS/ECE 6780/5780 Al Davis Today s topics: lab logistics interrupt synchronization reentrant code 1 CS 5780 Lab Logistics Lab2 Status Wed: 3/11 teams have completed their

### GUI ScreenIO Client/Server Layer Job Timeout Facility

Client/Server Layer Job Timeout Facility T he Server daemon supports idle job termination; the ability of the server to terminate jobs after a configurable period of user inactivity. This document explains

### Designing Computer Systems Boolean Algebra

Designing Computer Systems Boolean Algebra 08:34:45 PM 4 June 2013 BA-1 Scott & Linda Wills Designing Computer Systems Boolean Algebra Programmable computers can exhibit amazing complexity and generality.

### DDVTECH MEDIA SERVER PERFORMANCE MEASUREMENT INITIATIVE UPDATE, 2014 Q2

DDVTECH MEDIA SERVER PERFORMANCE MEASUREMENT INITIATIVE UPDATE, 2014 Q2 JARON VIËTOR, CTO, MISTSERVER / DDVTECH B.V. Abstract. As a follow-up to our first media server performance measurement initiative

### PostMark: A New File System Benchmark

Abstract Introduction The Real World The Benchmark Software Configuration and Usage The Results Future Directions Summary Abstract PostMark: A New File System Benchmark by Jeffrey Katcher Existing file

### Foundations. The Golden Record is Not Enough: The Case For Data Orchestration. CPDAs Highly Recommend

Foundations Journal of the Professional Petroleum Data Management Association Print: ISSN 2368-7533 - Online: ISSN 2368-7541 Volume 2 Issue 3 4Q2015 The Golden Record is Not Enough: The Case For Data Orchestration

### Big Data Infrastructure CS 489/698 Big Data Infrastructure (Winter 2017)

Big Data Infrastructure CS 489/698 Big Data Infrastructure (Winter 2017) Week 5: Analyzing Graphs (2/2) February 2, 2017 Jimmy Lin David R. Cheriton School of Computer Science University of Waterloo These

### Operating Systems Virtual Memory. Lecture 11 Michael O Boyle

Operating Systems Virtual Memory Lecture 11 Michael O Boyle 1 Paged virtual memory Allows a larger logical address space than physical memory All pages of address space do not need to be in memory the

### ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective. Part I: Operating system overview: Processes and threads

ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective Part I: Operating system overview: Processes and threads 1 Overview Process concept Process scheduling Thread

### Performance Profiling. Curtin University of Technology Department of Computing

Performance Profiling Curtin University of Technology Department of Computing Objectives To develop a strategy to characterise the performance of Java applications benchmark to compare algorithm choices

### Server monitoring for Tor exit nodes

CASE STUDY Server monitoring for Tor exit nodes We had a chance to catch up with Kenan Sulayman, who runs some of the biggest Tor servers in the world. Read on to learn about server monitoring for highthroughput

### Decision Making in C

Decision Making in C Decision making structures require that the programmer specify one or more conditions to be evaluated or tested by the program, along with a statement or statements to be executed

### 12 WAYS TO DESIGN A LOW COST SCADA SYSTEM THINGS YOU CAN DO AS AN OWNER/ENGINEER TO MAKE LOW COST SCADA A REALITY.

12 WAYS TO DESIGN A LOW COST SCADA SYSTEM THINGS YOU CAN DO AS AN OWNER/ENGINEER TO MAKE LOW COST SCADA A REALITY. - A PUBLICATION OF AFFINITY ENERGY - TABLE OF CONTENTS Intro 1 2 3 4 5 6 7 8 9 10 11 12

### From Lisp to Clojure/Incanter and R An Introduction. Shane M. Conway January 7, 2010

From Lisp to Clojure/Incanter and R An Introduction Shane M. Conway January 7, 2010 Back to the Future The goal of this presentation is to draw some rough comparisons between Incanter and R. There has

### Typing Data. Chapter Recursive Types Declaring Recursive Types

Chapter 27 Typing Data 27.1 Recursive Types 27.1.1 Declaring Recursive Types We saw in the previous lecture how rec was necessary to write recursive programs. But what about defining recursive types? Recursive

### CaptainCasa Enterprise Client. CaptainCasa Enterprise Client. CaptainCasa & Java Server Faces

CaptainCasa & Java Server Faces 1 Table of Contents Overview...3 Why some own XML definition and not HTML?...3 A Browser for Enterprise Applications...4...Java Server Faces joins the Scenario!...4 Java

### Programming Basics and Practice GEDB029 Decision Making, Branching and Looping. Prof. Dr. Mannan Saeed Muhammad bit.ly/gedb029

Programming Basics and Practice GEDB029 Decision Making, Branching and Looping Prof. Dr. Mannan Saeed Muhammad bit.ly/gedb029 Decision Making and Branching C language possesses such decision-making capabilities

### Introduction to Computers & Programming

16.070 Introduction to Computers & Programming Ada: Recursion Prof. Kristina Lundqvist Dept. of Aero/Astro, MIT Recursion Recursion means writing procedures and functions which call themselves. Recursion

### Online Copywriting. The Importance of Effective Online Content Writing for Your Business

Online Copywriting The Importance of Effective Online Content Writing for Your Business Contents Introduction Online Copywriting & the Modern Business Studies & Stats What this Means for You & Your Business

### Logical Connectives. All kittens are cute. ; I like pizza. ; The sky is blue. ; Triangles have three sides.

Logical Connectives We have learned what a statement is. Recall that a statement is just a proposition that asserts something that is either true or false. For instance, these are propositions: All kittens