Code Optimization

Sometimes it helps to have another set of eyes look over your code. Perhaps your code isn't working the way you'd like it to, and you'd like some help troubleshooting the problem. Or, maybe you'd like to see if there's a way to speed up the runtime of your code. We can help! We are best suited to assist you with R and Python coding languages, and we would certainly try to help with other languages as requested.

General Code Troubleshooting

Is your code not running properly? Maybe it's a minor issue, like a typo, or the wrong path to a data file. We can provide another set of eyes to look over your code. Maybe you just have an idea of what you'd like to accomplish but aren't sure exactly how to make the code fit. We'll be happy to provide basic code troubleshooting and consultation services.

Improve Readability

When you write and run your own code, you usually have a pretty good idea what each step is supposed to do. However, what if you need to share your code with someone else? Or, what if you need to re-visit code you wrote 10 years ago? It helps to have well-placed, descriptive comments embedded within your code. We can help you cultivate the habit of creating robust documentation, in key places within your code.

Profiling

One of the first steps in making your software run faster is to know which parts of it consume the most resources. We are familiar with various profiling techniques that can help identify performance bottlenecks. We highly recommend that you profile your code before you run it on any paid platform (like ACCESS, or AWS EC2 instances).

Subroutine Libraries

Most programming languages have a wide variety of libraries available. The libraries contain functions that can frequently speed up various operations. However, not all libraries are created equally! Some may perform better than others for certain purposes. If profiling your code reveals a particular bottleneck, we might be able to try using different libraries in that portion of your code to accomplish the same result in a more efficient manner.

Parallelization

Portions of your code might benefit from being parallelized. Basically, this means using more than one processor at a time to run your code. Think of it like grocery shopping.... If you have a list of ten items to shop for, then you need to pick up each item one at a time to fill your cart. But if you were shopping along with 9 other friends... you could each grab one item from the list and fill up your cart much faster. Certain portions of your code might benefit from parallelization, others might not. For instance, in our example... checking out wouldn't be any faster with 9 friends (in fact... it might even take longer!). We can look through your code and the profiling to determine if there are any areas that could benefit from parallelization techniques. Some libraries even parallelize automatically. Understanding how your code is parallelized will also help to determine if your code could perform better if it was run on a machine with more processors (like ACCESS or AWS EC2 instances).

Data Preparation

While technically not part of your actual code, the data you're processing can have a huge impact on the performance of your code. Cleaning your data and reducing the dataset to include just the necessary information for your code can make your code run better. We have a variety of techniques we can use to help you prepare your data for processing.

Disclaimers

We'll certainly do our best to help you, but some code might be beyond our ability to review. If that's the case, we'll try to connect you with additional resources that might provide further guidance.

We can't help students with graded assignments (unless we have express written consent from their instructor).