java - Class loading take long time to load a class with a big switch-case block -


i did quick benchmarking test of java class loading classes big switch block. have 10 classes 30-40 switch blocks. took on box ~3 secs java8 (java7 took 1.9 secs).

could please explain happens behind scenes while loading classes big switch blocks, , why slow?

edit:

the problem seems enums. enum size big, class loading takes time. below example.

public abstract class {     public static enum enum {         a100, a113, a126, a139, a152, a165, a178, a191, a204, a217, a230, a243, a256, a269, a282, a295,         a308, a321, a334, a347, a360, a373, a386, a399, a412, a425, a438, a451, a464, a477, a490, a503,         a516, a529, a542, a555, a568, a581, a594, a607, a620, a633, a646, a659, a672, a685, a698, a711,         a724, a737, a750, a763, a776, a789, a802, a815, a828, a841, a854, a867, a880, a893, a906, a919,         a932, a945, a958, a971, a984, a997, a1010, a1023, a1036, a1049, a1062, a1075, a1088, a1101, a1114,         a1127, a1140, a1153, a1166, a1179, a1192, a1205, a1218, a1231, a1244, a1257, a1270, a1283, a1296,         a1309, a1322, a1335, a1348, a1361, a1374, a1387, a1400, a1413, a1426, a1439, a1452, a1465, a1478,         a1491, a1504, a1517, a1530, a1543, a1556, a1569, a1582, a1595, a1608, a1621, a1634, a1647, a1660,         a1673, a1686, a1699, a1712, a1725, a1738, a1751, a1764, a1777, a1790, a1803, a1816, a1829, a1842,         a1855, a1868, a1881, a1894, a1907, a1920, a1933, a1946, a1959, a1972, a1985, a1998, a2011, a2024,         a2037, a2050, a2063, a2076, a2089, a2102, a2115, a2128, a2141, a2154, a2167, a2180, a2193, a2206,         a2219, a2232, a2245, a2258, a2271, a2284, a2297, a2310, a2323, a2336, a2349, a2362, a2375, a2388,          a2401, a2414, a2427, a2440, a2453, a2466, a2479, a2492, a2505, a2518, a2531, a2544, a2557, a2570,         a2583, a2596, a2609, a2622, a2635, a2648, a2661, a2674, a2687, a2700, a2713, a2726, a2739, a2752,         a2765, a2778, a2791, a2804, a2817, a2830, a2843, a2856, a2869, a2882, a2895, a2908, a2921, a2934,         a2947, a2960, a2973, a2986, a2999, a3012, a3025, a3038, a3051, a3064, a3077, a3090, a3103, a3116,          a3129, a3142, a3155, a3168, a3181, a3194, a3207, a3220, a3233, a3246, a3259, a3272, a3285, a3298,          a3311, a3324, a3337, a3350, a3363, a3376, a3389, a3402, a3415, a3428, a3441, a3454, a3467, a3480,         a3493, a3506, a3519, a3532, a3545, a3558, a3571, a3584, a3597, a3610, a3623, a3636, a3649, a3662,          a3675, a3688, a3701, a3714, a3727, a3740, a3753, a3766, a3779, a3792, a3805, a3818, a3831, a3844,          a3857, a3870, a3883, a3896, a3909, a3922, a3935, a3948, a3961, a3974, a3987, a4000, a4013, a4026,         a4039, a4052, a4065, a4078, a4091, a4104, a4117, a4130, a4143, a4156, a4169, a4182, a4195, a4208,          a4221, a4234, a4247, a4260, a4273, a4286, a4299, a4312, a4325, a4338, a4351, a4364, a4377, a4390,          a4403, a4416, a4429, a4442, a4455, a4468, a4481, a4494, a4507, a4520, a4533, a4546, a4559, a4572,          a4585, a4598, a4611, a4624, a4637, a4650, a4663, a4676, a4689, a4702, a4715, a4728, a4741, a4754,          a4767, a4780, a4793, a4806, a4819, a4832, a4845, a4858, a4871, a4884, a4897, a4910, a4923, a4936,          a4949, a4962, a4975, a4988, a5001, a5014, a5027, a5040, a5053, a5066, a5079, a5092, a5105, a5118,          a5131, a5144, a5157, a5170, a5183, a5196, a5209, a5222, a5235, a5248, a5261, a5274, a5287, a5300,          a5313, a5326, a5339, a5352, a5365, a5378, a5391, a5404, a5417, a5430, a5443, a5456, a5469, a5482,          a5495, a5508, a5521, a5534, a5547, a5560, a5573, a5586, a5599, a5612, a5625, a5638, a5651, a5664,          a5677, a5690, a5703, a5716, a5729, a5742, a5755, a5768, a5781, a5794, a5807, a5820, a5833, a5846,          a5859, a5872, a5885, a5898, a5911, a5924, a5937, a5950, a5963, a5976, a5989, a6002, a6015, a6028,          a6041, a6054, a6067, a6080, a6093, a6106, a6119, a6132, a6145, a6158, a6171, a6184, a6197, a6210,         a6223, a6236, a6249, a6262, a6275, a6288, a6301, a6314, a6327, a6340, a6353, a6366, a6379, a6392,          a6405, a6418, a6431, a6444, a6457, a6470, a6483, a6496, a6509, a6522, a6535, a6548, a6561, a6574,         a6587, a6600, a6613, a6626, a6639, a6652, a6665, a6678, a6691, a6704, a6717, a6730, a6743, a6756,          a6769, a6782, a6795, a6808, a6821, a6834, a6847, a6860, a6873, a6886, a6899, a6912, a6925, a6938,         a6951, a6964, a6977, a6990, a7003, a7016, a7029, a7042, a7055, a7068, a7081, a7094, a7107, a7120,          a7133, a7146, a7159, a7172, a7185, a7198, a7211, a7224, a7237, a7250, a7263, a7276, a7289, a7302,          a7315, a7328, a7341, a7354, a7367, a7380, a7393, a7406, a7419, a7432, a7445, a7458, a7471, a7484,         a7497, a7510, a7523, a7536, a7549, a7562, a7575, a7588, a7601, a7614, a7627, a7640, a7653, a7666,         a7679, a7692, a7705, a7718, a7731, a7744, a7757, a7770, a7783, a7796, a7809, a7822, a7835, a7848,          a7861, a7874, a7887, a7900, a7913, a7926, a7939, a7952, a7965, a7978, a7991, a8004, a8017, a8030,         a8043, a8056, a8069, a8082, a8095, a8108, a8121, a8134, a8147, a8160, a8173, a8186, a8199, a8212, a8225,         a8238, a8251, a8264, a8277, a8290, a8303, a8316, a8329, a8342, a8355, a8368, a8381, a8394, a8407,         a8420, a8433, a8446, a8459, a8472, a8485, a8498, a8511, a8524, a8537, a8550, a8563, a8576, a8589,          a8602, a8615, a8628, a8641, a8654, a8667, a8680, a8693, a8706, a8719, a8732, a8745, a8758, a8771,          a8784, a8797, a8810, a8823, a8836, a8849, a8862, a8875, a8888, a8901, a8914, a8927, a8940, a8953,          a8966, a8979, a8992, a9005, a9018, a9031, a9044, a9057, a9070, a9083, a9096, a9109, a9122, a9135,          a9148, a9161, a9174, a9187, a9200, a9213, a9226, a9239, a9252, a9265, a9278, a9291, a9304, a9317,         a9330, a9343, a9356, a9369, a9382, a9395, a9408, a9421, a9434, a9447, a9460, a9473, a9486, a9499,          a9512, a9525, a9538, a9551, a9564, a9577, a9590, a9603, a9616, a9629, a9642, a9655, a9668, a9681,          a9694, a9707, a9720, a9733, a9746, a9759, a9772, a9785, a9798, a9811, a9824, a9837, a9850, a9863,         a9876, a9889, a9902, a9915, a9928, a9941, a9954, a9967, a9980, a9993, a10006, a10019, a10032, a10045,         a10058, a10071, a10084, a10097, a10110, a10123, a10136, a10149, a10162, a10175, a10188, a10201, a10214,         a10227, a10240, a10253, a10266, a10279, a10292, a10305, a10318, a10331, a10344, a10357, a10370, a10383,         a10396, a10409, a10422, a10435, a10448, a10461, a10474, a10487, a10500, a10513, a10526, a10539, a10552,         a10565, a10578, a10591, a10604, a10617, a10630, a10643, a10656, a10669, a10682, a10695, a10708, a10721,         a10734, a10747, a10760, a10773, a10786, a10799, a10812, a10825, a10838, a10851, a10864, a10877, a10890,         a10903, a10916, a10929, a10942, a10955, a10968, a10981, a10994, a11007, a11020, a11033, a11046, a11059,          a11072, a11085, a11098, a11111, a11124, a11137, a11150, a11163, a11176, a11189, a11202, a11215, a11228,          a11241, a11254, a11267, a11280, a11293, a11306, a11319, a11332, a11345, a11358, a11371, a11384, a11397,          a11410, a11423, a11436, a11449, a11462, a11475, a11488, a11501, a11514, a11527, a11540, a11553, a11566,          a11579, a11592, a11605, a11618, a11631, a11644, a11657, a11670, a11683, a11696, a11709, a11722, a11735,          a11748, a11761, a11774, a11787, a11800, a11813, a11826, a11839, a11852, a11865, a11878, a11891, a11904,          a11917, a11930, a11943, a11956, a11969, a11982, a11995, a12008, a12021, a12034, a12047, a12060, a12073,          a12086, a12099, a12112, a12125, a12138, a12151, a12164, a12177, a12190, a12203, a12216, a12229, a12242,          a12255, a12268, a12281, a12294, a12307, a12320, a12333, a12346, a12359, a12372, a12385, a12398, a12411,          a12424, a12437, a12450, a12463, a12476, a12489, a12502, a12515, a12528, a12541, a12554, a12567, a12580,          a12593, a12606, a12619, a12632, a12645, a12658, a12671, a12684, a12697, a12710, a12723, a12736, a12749,          a12762, a12775, a12788, a12801, a12814, a12827, a12840, a12853, a12866, a12879, a12892, a12905, a12918,          a12931, a12944, a12957, a12970, a12983, a12996, a13009, a13022, a13035, a13048, a13061, a13074, a13087,          a13100, a13113, a13126, a13139, a13152, a13165, a13178, a13191, a13204, a13217, a13230, a13243, a13256,          a13269, a13282, a13295, a13308, a13321, a13334, a13347, a13360, a13373, a13386, a13399, a13412, a13425,          a13438, a13451, a13464, a13477, a13490, a13503, a13516, a13529, a13542, a13555, a13568, a13581, a13594,          a13607, a13620, a13633, a13646, a13659, a13672, a13685, a13698, a13711, a13724, a13737, a13750, a13763,          a13776, a13789, a13802, a13815, a13828, a13841, a13854, a13867, a13880, a13893, a13906, a13919, a13932,          a13945, a13958, a13971, a13984, a13997, a14010, a14023, a14036, a14049, a14062, a14075, a14088, a14101,          a14114, a14127, a14140, a14153, a14166, a14179, a14192, a14205, a14218, a14231, a14244, a14257, a14270,          a14283, a14296, a14309, a14322, a14335, a14348, a14361, a14374, a14387, a14400, a14413, a14426, a14439,          a14452, a14465, a14478, a14491, a14504, a14517, a14530, a14543, a14556, a14569, a14582, a14595, a14608,          a14621, a14634, a14647, a14660, a14673, a14686, a14699, a14712, a14725, a14738, a14751, a14764, a14777,          a14790, a14803, a14816, a14829, a14842, a14855, a14868, a14881, a14894, a14907, a14920, a14933, a14946,          a14959, a14972, a14985, a14998, a15011, a15024, a15037, a15050, a15063, a15076, a15089, a15102, a15115,          a15128, a15141, a15154, a15167, a15180, a15193, a15206, a15219, a15232, a15245, a15258, a15271, a15284,          a15297, a15310, a15323, a15336, a15349, a15362, a15375, a15388, a15401, a15414, a15427, a15440, a15453,          a15466, a15479, a15492, a15505, a15518, a15531, a15544, a15557, a15570, a15583, a15596, a15609, a15622,          a15635, a15648, a15661, a15674, a15687, a15700, a15713, a15726, a15739, a15752, a15765, a15778, a15791,          a15804, a15817, a15830, a15843, a15856, a15869, a15882, a15895, a15908, a15921, a15934, a15947, a15960,          a15973, a15986, a15999, a16012, a16025, a16038, a16051, a16064, a16077, a16090, a16103, a16116, a16129,          a16142, a16155, a16168, a16181, a16194, a16207, a16220, a16233, a16246, a16259, a16272, a16285, a16298,          a16311, a16324, a16337, a16350, a16363, a16376, a16389, a16402, a16415, a16428, a16441, a16454, a16467,          a16480, a16493, a16506, a16519, a16532, a16545, a16558, a16571, a16584, a16597, a16610, a16623, a16636,          a16649, a16662, a16675, a16688, a16701, a16714, a16727, a16740, a16753, a16766, a16779, a16792, a16805,          a16818, a16831, a16844, a16857, a16870, a16883, a16896, a16909, a16922, a16935, a16948, a16961, a16974,          a16987, a17000, a17013, a17026, a17039, a17052, a17065, a17078, a17091, a17104, a17117, a17130, a17143,          a17156, a17169, a17182, a17195, a17208, a17221, a17234, a17247, a17260, a17273, a17286, a17299, a17312,          a17325, a17338, a17351, a17364, a17377, a17390, a17403, a17416, a17429, a17442, a17455, a17468, a17481,          a17494, a17507, a17520, a17533, a17546, a17559, a17572, a17585, a17598, a17611, a17624, a17637, a17650,          a17663, a17676, a17689, a17702, a17715, a17728, a17741, a17754, a17767, a17780, a17793, a17806, a17819,          a17832, a17845, a17858, a17871, a17884, a17897, a17910, a17923, a17936, a17949, a17962, a17975, a17988,          a18001, a18014, a18027, a18040, a18053, a18066, a18079, a18092, a18105, a18118, a18131, a18144, a18157,          a18170, a18183, a18196, a18209, a18222, a18235, a18248, a18261, a18274, a18287, a18300, a18313, a18326,          a18339, a18352, a18365, a18378, a18391, a18404, a18417, a18430, a18443, a18456, a18469, a18482, a18495,          a18508, a18521, a18534, a18547, a18560, a18573, a18586, a18599, a18612, a18625, a18638, a18651, a18664,          a18677, a18690, a18703, a18716, a18729, a18742, a18755, a18768, a18781, a18794, a18807, a18820, a18833,          a18846, a18859, a18872, a18885, a18898, a18911, a18924, a18937, a18950, a18963, a18976, a18989, a19002,          a19015, a19028, a19041, a19054, a19067, a19080, a19093, a19106, a19119, a19132, a19145, a19158, a19171,          a19184, a19197, a19210, a19223, a19236, a19249, a19262, a19275, a19288, a19301, a19314, a19327, a19340,          a19353, a19366, a19379, a19392, a19405, a19418, a19431, a19444, a19457, a19470, a19483, a19496, a19509,          a19522, a19535, a19548, a19561, a19574, a19587,     }      public abstract float getvalue(int a, enum input); }  public class a1 extends {     @override     public float getvalue(int a, enum input) {         float ret = input.ordinal();          switch (input) {         case a100:             ret = / 100;             break;         }         return ret;     } }  public class a2 extends {     @override     public float getvalue(int a, enum input) {         float ret = input.ordinal();          switch (input) {         case a100:             ret = / 100;             break;         }         return ret;     } }  public class load {     public static void main(string[] args) {         long time = system.currenttimemillis();         new a1().getvalue(10, enum.a10032);         system.out.println("time taken - a1:" + (system.currenttimemillis() - time));          time = system.currenttimemillis();         new a2().getvalue(10, enum.a10032);         system.out.println("time taken - a2:" + (system.currenttimemillis() - time));     } } 

output:

time taken - a1:242 time taken - a2:209 

if interested, worked out problem myself hints above comments @joop eggen & @spacetrucker.

the generated class files a1 , a1 ~70kb. in these generated class files, switch statement optimized using static tableswitch, enums contiguous integers.

this table switch has all enums, without regards number used enums in switch-case block. most of time spent during class loading in creating , populating big tableswitch.

it interesting why oracles's java 8 takes twice time java 7 load such class tableswitch.

it useful if there option choose between tableswitch , lookupswitch.


Comments

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -