Optimizing converting int to base36
Asked Answered
A

1

5

I currently do a lot of conversions from int into a base36 string (70%~ of programs time). Are there any obvious optimisations to this code?

public static final String alphabet = "0123456789abcdefghijklmnopqrstuvwxyz";
public static StringBuilder b = new StringBuilder();
public static String sign = "";

public static String convertToBase36(int number)
{
    if (number == 0)
    {
        return "0";
    }

    b.delete(0, b.length());

    sign = "";
    if (number < 0)
    {
        sign = "-";
        number = -number;
    }

    int i = 0;
    int counter = 10;

    while (number != 0 && counter > 0)
    {
        counter--;
        i = number % 36;
        number = (number - i)/36;
        b.append(alphabet.charAt(i));

    }           

    return sign + b.reverse().toString();
}
Ashcraft answered 4/4, 2012 at 9:54 Comment(1)
Try asking at codereview.stackexchange.comEdging
F
17

You can use:

String s = Integer.toString(100, 36);
int i = Integer.parseInt("2s", 36);

Easier to maintain, and probably well optimized.

Fondness answered 4/4, 2012 at 10:0 Comment(1)
Thanks for the quick answer! Some testing shows using that beats my code by 30-50%.Ashcraft

© 2022 - 2024 — McMap. All rights reserved.