Friday Dec 19, 2014

Three New Dev Tips for C++ Developers

How to Find Out What Resources Your Application Has Used

by Darry Gove

If you want to know how much CPU, memory, or other resources your application has used, you can pre-load a library and define a .fini method that prints out the results. You can also take advantage of the getusage call, which provides some information about CPU time and processes. But more information is available. Darryl provides examples of how to use these two components plus others that fill in the details.

How To Rapidly Identify Performance Opportunities

by Darry Gove

Profiling is critical to improving application performance. Without profiling, it is very easy to guess where the application is spending cycles, and then expend effort optimizing code that has little effect on overall performance. Oracle Solaris Studio 12.4 provides an overview screen designed to focus you on the metrics with the most promise. Darryl Gove walks you through the overview screen and explains what it indicates about your application.

Dev Tip: How to Get Finer Grained Control of Debugging Information

by Ivan Soleimanipour

The new options in Oracle Solaris Studio 12.4 provide much finer-grained control over debug information, which allows you to choose how much information is provided and reduce the amount of disk space needed for the executable. Ivan enumerates the options and provides examples of how to use them.

About the Photograph

I took the picture of the 01 Ducati 748S this summer, in Colorado. It currently has about 1300 miles on the odometer.

- Rick

Follow Rick on:
Personal Blog | Personal Twitter | Oracle Community Profile
  Follow OTN Garage on:
Blog | Community Discussions | Web | Facebook | Twitter | YouTube

Wednesday Sep 03, 2014

New Articles for Oracle Solaris Developers

Even though it was over 10 years ago, I still remember my side of the conversation with Jerry Jackson:

"Tuple? WTF is a Tuple?"

Jerry had just finished writing a language for building online insurance applications, and he was filling me in some of the gaps in my street urchin understanding of computer science. What I remember about Jerry's answer all these years later I can only paraphrase as:

"A tuple is like a grocery list. Except when it's not."

Although I've been focusing on content for sysadmins for the last few years, developers hold a special place in my heart. And Darryl Gove is one of the most generous with his knowledge. Not too long ago he teamed up with Steve Clamage to write several articles for OTN. Here are three of them:

Using the New C++ Array and Tuple Containers

by Darryl Gove and Steve Clamage

An array is equivalent to a traditional fixed length array in C++, but is accessible through standard container methods. A tuple is an ordered set of related elements of different types, such as one person's name, age, height, and so on. Both are new container types introduced in the C++11 Standard. Darryl and Steve explain what they are and how to use them.

How to Use Lambda Expressions in C++ 11

by Steve Clamage and Darryl Gove

Lambda expressions let you treat functions as objects, which means you can use them when you write a function that requires another function as one of its parameters. According to the authors, Lambdas are one of the defining features of the recent C++11 standard, and in this article they describe their syntax, how to pass them as pointers, and more.

Understanding the New Set and Map Containers in the C++ 11 Standard Library

by Darryl Gove and Steve Clamage

Map and set templates have been part of the C++ Standard Library since C++03. The C++11 Standard Library now includes templates for unordered maps and unordered sets. In some situations, the unordered versions can provide faster lookups than their ordered counterparts. Darryl and Steve explain.

About the Photograph

That's JimBob and El Jefe, two of my close riding buddies catching a little warmth from the sun outside of El Paso, Texas, during the now famous Durango Blizzard Ride of 2006. Will have to blog about that some day. They are tuple if there ever was one.

Follow Rick on:
Personal Blog | Personal Twitter | Oracle Community Profile
  Follow OTN Garage on:
Web | Facebook | Twitter | YouTube

Wednesday Jun 25, 2014

Helping Your Compiler Handle the Size of Your Constants

by Darryl Gove

When I use a constant in the following code, I get a warning:

On the other hand if I wrote:

Then then compiler will quite happily handle the constant.

The problem with the first bit of code is that it treats the value as a signed integer, and a signed integer can only hold 31 bits of precision plus a sign bit.

So how does the compiler decide how to represent a constant? The answer is interesting.

The compiler will attempt to fit a constant into the smallest value that it can. So it will try to fit the value into these types, in order: into an int, a long int, and then a long long int.

In the above code sample, the compiler will find that 1 and 31 both fit very nicely into signed ints. There's a shift left operation (<<) in the expression that produces a result of the same type as the left operand. So the whole expression (1<<31) has type signed int, which leads to the the warning.

To avoid the warning we can tell the compiler that this is an unsigned value. Either by typecasting the 1 to be unsigned in this manner:

or by declaring it as an unsigned value, like this:

More About Oracle Solaris Studio

Oracle Solaris Studio is a C, C++ and Fortran development tool suite, with compiler optimizations, multithread performance, and analysis tools for application development on Oracle Solaris, Oracle Linux, and Red Hat Enterprise Linux operating systems. Find out more about the Oracle Solaris Studio 12.4 Beta program here.

About the Photograph

Photograph of Zion National Park, Utah taken by Rick Ramsey in May 2014 on The Ride to the Sun Reunion.

- Darryl

Follow Darryl on:
Oracle Blog | Twitter
  Follow OTN Garage on:
Web | Facebook | Twitter | YouTube

Wednesday Mar 26, 2014

If You Have to Ask, You Wouldn't Understand

Although being subjected to that kind of attitude is unpleasant, subjecting someone else to it is loads of fun. Just ask someone who rides a Harley why they ride a Harley, and watch how much they enjoy unloading that sentiment on your head, you member of the unwashed, you.

I feel the same way about Oracle Solaris. Don't talk to me about how much Windows or some other OS is capable of doing. I don't care. Your OS is a metric cruiser. Go away.

That feeling of vast superiority is even more pronounced when I'm talking about Oracle Solaris Studio. Which should have been renamed Oracle Solaris and Oracle Linux Studio, if you are insightful enough to ask me, because any Linux developer who is working on anything remotely interesting should be using Oracle Solaris Studio as their IDE. I freakin love it. I've had the pleasure of interviewing Don Kretch, the head of the Solaris Studio engineering team, many times. And I've enjoyed myself every single time. If you think you're worthy, you are welcome to try to understand our conversation (jump to "Interviews with Don Kretch," below).

If my rhetoric has convinced you, as it would convince anyone of vastly superior intelligence, you'll want to pretend that you already knew how good Oracle Solaris (and Linux) Studio is, and berate me for even suggesting you didn't. Good for you. You're catching on. But you'll still be faced with a dearth of actual knowledge about this IDE for the Vastly Intelligent.

Not to worry. There's a way for you to learn what you need to learn without anyone else finding out so you can pretend to have known all along.

Oracle Solaris (and Linux) Studio 12.4 Beta Program

The Beta Program for Oracle Solaris Studio 12.4 begins today. Download the software, try out its new features, and join in the discussions. These resources will help:

Landing Page, including links to Beta Program Forums
Download Center, where you can download a free copy

Interviews with Don Kretch

About the Photograph

Photograph of 2002 Harley Davidson Softail Deuce taken by Rick Ramsey in Massachusetts, USA.

- Rick

Follow me on:
Blog | Facebook | Twitter | YouTube

Monday Feb 24, 2014

If Your Processor Stalls From a Read After Writer Operation ...

... rewrite your code. Better yet, write code that avoids this problem in the first place. The problem can occur when an application wants to load a value that it has just stored in memory. Read After Write (RAW) operations are common, so most chips are designed with hardware that makes that happen fast. But in some cases, you can write code that stumps the hardware. And so it stalls.

And you tumble to earth in horror, screaming for your life and clawing at the controls.

And you smack into the a pile of rocks. Or, to the horror of young mothers in minivans, the freeway during rush-hour traffic. Or worse, the middle of the ocean, so that if you somehow survive the impact, you drown. And nobody finds your body. And your loved ones can never move on.

Unless you're wearing a parachute. Like the one we just published from Darryl Gove.

Tech Article: Avoid Performance Loss (And a Fiery Death) from RAW Hazards

by Darryl Gove

Darryl explains exactly how a processor can stall from a bad RAW operation, and the common situations that cause this problem. Then he shows you how to identify, fix, and avoid writing that kind of code. Examples included. Help your loved ones move on. Read Darryl's article.

About the Author

Darryl Gove is a senior principal software engineer in the Oracle Solaris Studio team, working on optimizing applications and benchmarks for current and future processors. He is also the author of the books Multicore Application Programming, Solaris Application Programming, and The Developer's Edge.

Read Darryl Gove's blog on blogs.oracle.com/d.

Picture of radial engine taken by Rick Ramsey at Bay Area Aerospace Museum

- Rick

Follow me on:
Blog | Facebook | Twitter | YouTube | The Great Peruvian Novel

About

Contributors:
Rick Ramsey
Kemer Thomson
and members of the OTN community

Search

Archives
« February 2015
SunMonTueWedThuFriSat
1
2
3
4
6
7
8
9
10
11
12
14
15
16
17
18
20
21
22
23
24
25
26
27
28
       
       
Today
Blogs We Like