Melyik a hatékonyabb módszer a mezőérték kinyerésére?

    Megvizsgáltam a kérdést, hogy melyik a hatékonyabb megoldás egy rekord mezőinek lekérésére: az r.getObject("fieldName") vagy az r.getObject(fieldIndex), ahol az r változó egy ResultSet objektumra mutat. A kísérleti eredmények igazolták azt a gyanúmat, hogy gyorsabb index alapján lekérni a mező értékét. A kísérletekben 3500 rekordot olvastunk ki a ResultSet objektumból.

    Kísérlet
    sorszáma
    r.getObject("fieldName")
    (ms)
    r.getObject(fieldIndex)
    (ms)
    1 109 85
    2 61 33
    3 50 34
    4 36 35
    5 51 20
    6 23 36
    7 34 34
    8 28 30
    9 25 27
    10 29 26
    Átlag 44,6 36,0

     

    Az eredmény szerint a második módszer 19,3 %-al gyorsabb. Ugyanakkor persze kevésbé olvasható kódot eredményez. A két kódrészlet a következő képpen néz ki:

    try (ResultSet r = s1.executeQuery("SELECT * FROM \"TelepulesTable\"")) {
                            while (r.next()) {
                                pse2.setIndex(1);
                                pse2.setString(r.getString("telepulesNev"), true);
                                pse2.setInt((Integer) r.getObject("iranyitoSzam"));
                            }
                        }

     

    try (ResultSet r = s1.executeQuery("SELECT \"telepulesNev\",\"iranyitoSzam\" FROM \"TelepulesTable\"")) {
                            while (r.next()) {
                                pse2.setIndex(1);
                                pse2.setString(r.getString(1), true);
                                pse2.setInt((Integer) r.getObject(2));
                            }
                        }


    Az eredmények alapján kijelenthető hogy akkor érdemes az indexes módszert alkalmazni, ha nagyon sok rekorddal dolgozunk, egyébként nem olyan jelentős az eltérés.

    Tags: