minta ke boss lo dikompakar agar kasih hadiah aja yang jawab paling bagus

5 juta gitu

F

2008/6/4 T Budi S <[EMAIL PROTECTED]>:

> Dear juggers,
>
> Mumpung lg hot2nya bahas thread puts vs System.out.println,
> gw ada 1 challenge utk optimize string to double conversion method
> dari class java.lang.Double:
>
>        public static Double valueOf(double d)
>
> Kenapa gw butuh utk optimize ini? Krn di project yg sedang gw kerjakan
> skr, method valueOf memakan 90% ! process time dr keseluruhan process.
> FYI, data yg dibaca sekitar 10 ribu (nantinya akan jadi ratusan ribu),
> setiap row terdiri dari 8 column, di mana setiap column-nya berisi
> data seperti ini:
>
>
> 13.4375:17.1875:22.5:22.8125:23.4375:3:5:4:3:3:3:5:5:3:4:4:5:3:2:6:2:5:3:6:4:2:5:6:3:5:3:2:7:6:5:2:3:6:5:5:2:4:6:4:6:5:3:4:5:3:3:3:5:6:5:2:2:6:7:5:1:3:4:7:6:4:2:1:5:4:3:3:4:5:6:3:1:6:3:5:1:4:2:3:3:3.5:3.75:3.75:4:3.75:3:3.25:5.25:5:5:2.75:2.75:5.25:4.25:5.25:1.5:4:3.75:5:4.75:3:5:3.75:3.5:4.25:2.25:3.5:6.25:4.5:5.25:2.75:2.75:4.75:6.25:4.75:2.75:2.5:3.25:4:4.5:2.75:4.25:5.5:3.75:4.25:2.5:4.25:4.5:4.25:5.25:3.75:2.75:3.5
>
> Waktu yg dibutuhkan utk meload semua data ini adalah 4547 ms.
>
> Kemudian saya mencoba utk menggantikan Double.valueOf method
> dgn method bikinan saya sendiri, & mendapatkan hasil 3718 ms.
>
> Code-nya adalah sbb:
>
> ==============================================
> public class ConversionHelper
> {
>
>    public static double stringToDouble(String s)
>    {
>        char[] cc = s.toCharArray();
>        int length = cc.length;
>        if (length == 0)
>            return 0;
>
>        int i = 0;
>
>        double negation = 1;
>        if (cc[0] == '-')
>        {
>            negation = -1;
>            i++;
>        }
>
>        int point = -1;
>        int value = 0;
>        for (; i<length; i++)
>        {
>            if (cc[i] == '.')
>                point = i;
>            else
>                value = value * 10 + cc[i] - '0';
>        }
>
>        int divider = 1;
>        if (point > -1)
>            divider = pow10(length - point - 1);
>
>        return negation * value / divider;
>    }
>
>    private static int pow10(int n) {
>
>        int result = 1;
>        for (int i=0; i<n; i++)
>        {
>            result *= 10;
>        }
>
>        return result;
>    }
>
> }
>
> ==============================================
>
> Ditest dengan looping 1 juta kali:
> ==============================================
>    @Test
>    public void testPerformance()
>    {
>        long t1 = System.currentTimeMillis();
>        for (int i = 0; i < 1000000; i++)
>        {
> //            Double.valueOf("-12.3456");
>            ConversionHelper.stringToDouble("-12.3456");
>        }
>
>        long t2 = System.currentTimeMillis();
>        System.out.println("Elapsed time = " + (t2 - t1) + " ms");
>    }
>
> ==============================================
>
> Hasilnya adalah:
> - Double.valueof(String): Elapsed time = 344 ms
> - ConversionHelper.stringToDouble: Elapsed time = 157 ms
>
> Sori panjang banget :D Thx kalo udah baca smp di sini.
> Skr saatnya utk menerima challenge utk mendapatkan hasil yg lebih optimal
> ;)
>
> regards,
> T Budi S
>
> ------------------------------------
>
> Kalau mau keluar dari mailing list ini, caranya kirim sebuah email ke
> [EMAIL PROTECTED]
>
> Jangan lupa, website JUG Indonesia adalah http://www.jug.or.id
>
> Yahoo! Groups Links
>
>
>
>


-- 
-- 
Frans Thamura
Director of Meruvian
Education, Consulting, Networking, Profesional Marketplace, OpenSource
Development and Implementation

Mobile: +62 855 7888 699
YM: [EMAIL PROTECTED]
Linkedin: http://www.linkedin.com/in/fthamura

Join jTechnopreneur Program @ jtechnopreneur.com

Kirim email ke