Giter VIP home page Giter VIP logo

Comments (2)

moodymudskipper avatar moodymudskipper commented on July 2, 2024

Here's an example (data at the bottom):

microbenchmark::microbenchmark(
  times = 5, 
  construct(x), 
  construct_raw(x), 
  styler::style_text(construct_raw(x)), 
  prettycode::highlight(construct_raw(x))
)
#> Unit: milliseconds
#>                                     expr        min         lq       mean    median         uq        max neval
#>                             construct(x) 2696.02917 2760.53410 2892.80608 2893.9639 3048.13647 3065.36676     5
#>                         construct_raw(x)   29.37154   29.97686   33.10843   30.4222   33.16101   42.61056     5
#>     styler::style_text(construct_raw(x)) 2719.03677 2775.31132 2939.06594 2984.7497 3076.42705 3139.80481     5
#>  prettycode::highlight(construct_raw(x))  113.26734  114.18307  127.93392  122.6549  135.99716  153.56718     5

We see that we are 100 times slower because of {styler}, this is not trivial at all!
With prettycode we are still 4 times slower, much better, and acceptable if used only when printing.

I believe we only use styler for indentation and pretty code, so if we pass the indentation around in the dots we can have a 100x speedup right away and have more control on where to cut the lines.

data

x <- data.frame(
  group = c(
    0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
    0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
    1
  ),
  T0_P1 = c(
    0.354515, 0.400612, 0.22268, 0.356677, -0.36244, 0.0749541, 0.654674,
    0.410779, 0.282992, 0.279816, 0.359564, 0.498958, 0.207068, 0.538793,
    -0.791641, 0.324721, 0.566456, 0.423489, 0.400608, -0.233297, 0.68386,
    -0.28549, -0.291538, 0.516093, 0.143584, 0.231018, 0.468302, 0.0280513,
    0.52974, 0.475668, -0.038977, 0.535264, 0.420121, 0.343218, 0.308243, 0.10415,
    0.017395, 0.548448, 0.0740497, -1.0745, -0.087471, 0.294959, 0.282871,
    -2.08282, -2.68453, 0.283177, 0.200626, 0.0388438, 0.432551, -0.861437,
    -0.174149, -0.120327, 0.110401
  ),
  T1_P1 = c(
    0.370035, 0.408102, 0.249126, 0.381831, -0.505082, 0.0521383, 0.624644,
    0.374959, 0.172251, 0.140744, 0.34101, 0.424967, 0.174693, 0.115618,
    -0.367998, 0.385345, 0.603818, 0.382661, 0.248948, 0.197852, 0.694853,
    -0.212129, -0.129636, 0.513091, 0.0707203, 0.285887, 0.478958, 0.632496,
    0.44714, 0.485816, -0.103302, 0.492024, 0.46066, 0.365897, 0.290883,
    0.0913257, -0.00347047, 0.3081, 0.161523, -0.018373, -0.0656219, -0.326731,
    0.204379, 0.0954256, 0.40172, 0.240711, 0.432768, 0.295718, 0.108598,
    0.045233, -0.49056, -0.0479581, 0.228132
  ),
  T1.T0.diff_P1 = c(
    4, 2, 12, 7, 39, -30, -5, -9, -39, -50, -5, -15, -16, -79, -54, 19, 7, -10,
    -38, -185, 2, -26, -56, -1, -51, 24, 2, 2155, -16, 2, 165, -8, 10, 7, -6, -12,
    -120, -44, 118, -98, -25, -211, -28, -105, -115, -15, 116, 661, -75, -105,
    182, -60, 107
  ),
  T2_P1 = c(
    0.373786, 0.395853, 0.134041, 0.378412, -0.415208, 0.143939, 0.582672,
    0.386103, 0.215891, -0.274945, 0.279119, 0.438118, 0.234042, 0.34044,
    -0.573318, 0.456852, 0.604797, 0.336034, 0.450904, 0.287317, 0.680436,
    -0.409743, -0.0853578, 0.562901, 0.066638, 0.371619, 0.52145, 0.548569,
    0.514376, 0.479195, 0.053544, 0.177107, 0.35743, 0.422869, 0.331834, 0.146896,
    -0.0388651, 0.36162, 0.12057, 0.00685142, -0.000308817, -0.208294, 0.290837,
    0.154187, 0.446681, 0.233519, 0.117889, 0.254841, 0.0637857, 0.143729,
    -0.206059, -0.0150699, -0.219658
  ),
  T2.T0.diff_P1 = c(
    5, -1, -40, 6, 15, 92, -11, -6, -24, -198, -22, -12, 13, -37, -28, 41, 7, -21,
    13, -223, -1, 44, -71, 9, -54, 61, 11, 1856, -3, 1, -237, -67, -15, 23, 8, 41,
    -323, -34, 63, -101, -100, -171, 3, -107, -117, -18, -41, 556, -85, -117, 18,
    -87, -299
  ),
  T2.T1.diff_P1 = c(
    1, -3, -46, -1, -18, 176, -7, 3, 25, -295, -18, 3, 34, 194, 56, 19, 0, -12,
    81, 45, -2, 93, -34, 10, -6, 30, 9, -13, 15, -1, -152, -64, -22, 16, 14, 61,
    1020, 17, -25, -137, -100, -36, 42, 62, 11, -3, -73, -14, -41, 218, -58, -69,
    -196
  ),
  T3_P1 = c(
    -0.108073, -0.157872, 0.124176, 0.235193, 0.19941, -0.0932395, 0.264204,
    0.0910636, -0.197725, 0.0419729, -0.393531, 0.116635, 0.121932, 0.585601,
    -0.412341, 0.238735, 0.380094, 0.249455, 0.339111, 0.00476125, 0.514552,
    -0.703535, 0.345998, 0.110932, -0.7302, -0.113644, 0.369359, 0.266292,
    0.526663, 0.0106685, -1.01393, -2.39016, -0.653869, 0.0979844, 0.0634867,
    0.0336409, -0.284115, 0.205695, 0.144771, 0.0072521, -0.182956, -0.165441,
    0.227927, 0.00188442, 0.4398, 0.160438, 0.451799, -0.476955, 0.075239,
    0.088576, -0.347784, 0.136475, -0.213508
  ),
  T3.T0.diff_P1 = c(
    -130, -139, -44, -34, -155, -224, -60, -78, -170, -85, -209, -77, -41, 9, -48,
    -26, -33, -41, -15, -102, -25, 146, -219, -79, -609, -149, -21, 849, -1, -98,
    2501, -547, -256, -71, -79, -68, -1733, -62, 96, -101, 109, -156, -19, -100,
    -116, -43, 125, -1328, -83, -110, 100, -213, -293
  ),
  T3.T1.diff_P1 = c(
    -129, -139, -50, -38, -139, -279, -58, -76, -215, -70, -215, -73, -30, 406,
    12, -38, -37, -35, 36, -98, -26, 232, -367, -78, -1133, -140, -23, -58, 18,
    -98, 882, -586, -242, -73, -78, -63, 8087, -33, -10, -139, 179, -49, 12, -98,
    9, -33, 4, -261, -31, 96, -29, -385, -194
  ),
  T4_P1 = c(
    -0.127339, 0.234353, 0.0615958, 0.174939, 0.249978, -0.428429, 0.276876,
    0.238878, -0.0508291, -0.11582, -0.25588, 0.35472, 0.114993, 0.544118,
    -0.2078, -0.141583, 0.501062, -0.0577436, 0.449832, -0.819736, 0.536002,
    -0.671793, 0.449196, 0.166851, -0.848327, -0.148966, 0.608949, 0.299139,
    0.358773, -0.122672, -0.789994, -0.470871, -0.337386, 0.363851, 0.135002,
    -0.2105, -0.355363, 0.211093, 0.0403827, -0.401496, -0.163691, 0.161768,
    0.0766178, -0.19001, 0.44916, 0.22669, 0.400209, -0.221847, 0.409649,
    -0.626259, -0.841326, 0.197649, -0.365613
  ),
  T4.T0.diff_P1 = c(
    -136, -42, -72, -51, -169, -672, -58, -42, -118, -141, -171, -29, -44, 1, -74,
    -144, -12, -114, 12, 251, -22, 135, -254, -68, -691, -164, 30, 966, -32, -126,
    1927, -188, -180, 6, -56, -302, -2143, -62, -45, -63, 87, -45, -73, -91, -117,
    -20, 99, -671, -5, -27, 383, -264, -431
  ),
  T4.T1.diff_P1 = c(
    -134, -43, -75, -54, -149, -922, -56, -36, -130, -182, -175, -17, -34, 371,
    -44, -137, -17, -115, 81, -514, -23, 217, -447, -67, -1300, -152, 27, -53,
    -20, -125, 665, -196, -173, -1, -54, -330, 10140, -31, -75, 2085, 149, -150,
    -63, -299, 12, -6, -8, -175, 277, -1485, 72, -512, -260
  ),
  T5_P1 = c(
    -0.1898, 0.278567, 0.191452, 0.242484, 0.188506, -0.254942, 0.123944,
    0.121264, -0.058461, -0.0706581, -0.223103, 0.369762, 0.154631, 0.56503,
    -0.336153, -0.152756, 0.405927, -0.0312427, 0.102258, -1.10958, 0.533744,
    -0.507479, -0.255318, 0.472308, -0.839511, -0.164691, 0.511855, -0.0619669,
    0.385496, -0.0389004, -0.143956, 0.0928928, -0.436918, 0.419153, 0.234921,
    -0.161249, -0.236711, 0.121568, 0.109438, -0.150289, -0.0742779, 0.332437,
    0.274052, -0.285785, 0.492551, 0.304347, 0.473602, -0.091301, -0.0833264,
    -0.492741, 0.0980397, 0.28639, -0.122452
  ),
  T5.T0.diff_P1 = c(
    -154, -30, -14, -32, -152, -440, -81, -70, -121, -125, -162, -26, -25, 5, -58,
    -147, -28, -107, -74, 376, -22, 78, -12, -8, -685, -171, 9, -321, -27, -108,
    269, -83, -204, 22, -24, -255, -1461, -78, 48, -86, -15, 13, -3, -86, -118, 7,
    136, -335, -119, -43, -156, -338, -211
  ),
  T5.T1.diff_P1 = c(
    -151, -32, -23, -36, -137, -589, -80, -68, -134, -150, -165, -13, -11, 389,
    -9, -140, -33, -108, -59, -661, -23, 139, 97, -8, -1287, -158, 7, -110, -14,
    -108, 39, -81, -195, 15, -19, -277, 6721, -61, -32, 718, 13, -202, 34, -399,
    23, 26, 9, -131, -177, -1189, -120, -697, -154
  ),
  T6_P1 = c(
    0.0704855, 0.126056, -0.041206, -0.50256, -0.0191214, 0.0130739, -0.0660002,
    -0.352739, -0.404444, -0.00161666, 0.0881695, 0.501725, 0.182178, 0.201283,
    -0.321061, -0.496934, 0.430376, 0.18756, 0.469647, -0.297791, 0.325876,
    -0.949504, 0.202842, 0.451688, -0.5095, 0.111856, -0.129408, 0.357865,
    0.292238, 0.143681, -0.465477, -0.447798, -0.166457, 0.170199, -0.106613,
    0.11888, -0.0224689, 0.290059, -1.02956, 0.0534638, -0.876711, 0.0234375,
    -0.208117, 0.121276, -0.10558, -3.63428, -0.178923, -0.27206, -1.187,
    -0.0671986, -0.185629, -0.102337, 0.135412
  ),
  T0_P2 = c(
    23.4767, 80.6425, 27.6929, 36.3399, 0.222854, 15.4059, 16.3445, 10.3642,
    60.1418, 10.7158, 73.6641, 74.3803, 82.1072, 28.709, 19.5041, 22.0872,
    24.0681, 10.1122, 17.4177, 17.5524, 23.7382, 14.7304, 94.7995, 16.6482,
    30.4161, 23.0676, 14.3303, 47.4505, 34.8889, 12.017, 17.7335, 0, 21.6478,
    13.8952, 12.9003, 17.1954, 22.6989, 99.8425, 20.3926, 4.82337, 29.8876,
    15.7117, 18.5338, 33.1752, 14.0226, 15.0854, 8.91286, 26.1874, 23.1092,
    35.0972, 5.55667, 11.1803, 27.9371
  ),
  T1_P2 = c(
    16.1512, 16.0162, 25.7443, 25.5485, 20.5682, 19.2128, 13.2216, 60.5308,
    50.5352, 17.9931, 10.7115, 93.1466, 77.2653, 13.0037, 20.4135, 10.9121,
    22.838, 75.1338, 31.0509, 15.826, 84.0741, 13.0837, 19.1441, 61.3631, 13.0631,
    32.1478, 83.8708, 0, 10.8444, 40.9282, 18.9858, 0, 97.1279, 10.1327, 61.5105,
    23.271, 21.4968, 75.2181, 15.4974, 13.6953, 10.9891, 17.2444, 14.447, 25.7276,
    11.0123, 7.84029, 12.0358, 14.6238, 26.1094, 19.4256, 4.30366, 4.01792,
    9.30375
  ),
  T1.T0.diff_P2 = c(
    -31, -80, -7, -30, 9129, 25, -19, 484, -16, 68, -85, 25, -6, -55, 5, -51, -5,
    643, 78, -10, 254, -11, -80, 269, -57, 39, 485, -100, -69, 241, 7, NaN, 349,
    -27, 377, 35, -5, -25, -24, 184, -63, 10, -22, -22, -21, -48, 35, -44, 13,
    -45, -23, -64, -67
  ),
  T2_P2 = c(
    17.6024, 13.7435, 31.066, 36.6922, 17.9928, 23.0723, 61.4986, 90.0946,
    49.7064, 18.4268, 93.6249, 64.6212, 66.0091, 51.8095, 85.8795, 17.8472,
    20.5687, 10.1429, 17.3647, 24.6992, 20.6315, 57.3102, 72.0594, 64.146,
    10.0122, 80.8444, 12.5641, 91.9954, 54.9446, 43.0989, 17.8794, 13.4608,
    11.6372, 58.2568, 38.3219, 22.9037, 11.2806, 15.4506, 10.765, 12.843, 9.43461,
    5.55588, 10.5876, 25.9979, 20.3327, 9.23773, 10.9801, 82.6116, 14.2446,
    25.8306, 10.359, 7.52712, 18.3046
  ),
  T2.T0.diff_P2 = c(
    -25, -83, 12, 1, 7974, 50, 276, 769, -17, 72, 27, -13, -20, 80, 340, -19, -15,
    0, 0, 41, -13, 289, -24, 285, -67, 250, -12, 94, 57, 259, 1, Inf, -46, 319,
    197, 33, -50, -85, -47, 166, -68, -65, -43, -22, 45, -39, 23, 215, -38, -26,
    86, -33, -34
  ),
  T2.T1.diff_P2 = c(
    9, -14, 21, 44, -13, 20, 365, 49, -2, 2, 774, -31, -15, 298, 321, 64, -10,
    -87, -44, 56, -75, 338, 276, 5, -23, 151, -85, Inf, 407, 5, -6, Inf, -88, 475,
    -38, -2, -48, -79, -31, -6, -14, -68, -27, 1, 85, 18, -9, 465, -45, 33, 141,
    87, 97
  ),
  T3_P2 = c(
    68.731, 12.7383, 25.7426, 30.4209, 95.1241, 30.5427, 69.711, 95.4164, 66.3215,
    12.0129, 79.4669, 13.884, 11.3739, 39.1618, 31.8607, 11.3097, 10.465, 45.7652,
    10.2818, 25.492, 35.3997, 44.1852, 28.2852, 11.1805, 69.4717, 77.7511, 10.573,
    14.9569, 86.5404, 34.5778, 30.6023, 89.6231, 16.3404, 32.2442, 67.5567,
    15.6465, 17.3722, 30.3812, 10.2457, 4.68845, 13.1288, 10.1949, 8.64307,
    5.27611, 22.0138, 10.4523, 7.4947, 77.573, 14.8642, 19.6778, 15.5668, 3.56341,
    22.285
  ),
  T3.T0.diff_P2 = c(
    193, -84, -7, -16, 42584, 98, 327, 821, 10, 12, 8, -81, -86, 36, 63, -49, -57,
    353, -41, 45, 49, 200, -70, -33, 128, 237, -26, -68, 148, 188, 73, Inf, -25,
    132, 424, -9, -23, -70, -50, -3, -56, -35, -53, -84, 57, -31, -16, 196, -36,
    -44, 180, -68, -20
  ),
  T3.T1.diff_P2 = c(
    326, -20, 0, 19, 362, 59, 427, 58, 31, -33, 642, -85, -85, 201, 56, 4, -54,
    -39, -67, 61, -58, 238, 48, -82, 432, 142, -87, Inf, 698, -16, 61, Inf, -83,
    218, 10, -33, -19, -60, -34, -66, 19, -41, -40, -79, 100, 33, -38, 430, -43,
    1, 262, -11, 140
  ),
  T4_P2 = c(
    14.0407, 86.8672, 11.4711, 30.0838, 67.8631, 81.9849, 72.5374, 83.0472,
    65.794, 85.05, 10.5096, 74.2366, 10.8808, 53.6499, 13.5859, 99.9067, 12.1605,
    13.9899, 40.1762, 20.1221, 16.0165, 38.9638, 11.5921, 75.9692, 10.5741,
    13.1628, 67.1616, 11.6427, 10.1465, 10.3222, 48.7381, 77.0429, 32.6667,
    16.3706, 11.0336, 11.8518, 18.4726, 10.0398, 3.48196, 8.6861, 6.32977,
    18.1642, 18.7497, 12.7896, 17.9789, 15.0961, 10.5745, 19.8159, 22.8705,
    5.8275, 16.8047, 3.72111, 8.86339
  ),
  T4.T0.diff_P2 = c(
    -40, 8, -59, -17, 30352, 432, 344, 701, 9, 694, -86, 0, -87, 87, -30, 352,
    -49, 38, 131, 15, -33, 165, -88, 356, -65, -43, 369, -75, -71, -14, 175, Inf,
    51, 18, -14, -31, -19, -90, -83, 80, -79, 16, 1, -61, 28, 0, 19, -24, -1, -83,
    202, -67, -68
  ),
  T4.T1.diff_P2 = c(
    -13, 442, -55, 18, 230, 327, 449, 37, 30, 373, -2, -20, -86, 313, -33, 816,
    -47, -81, 29, 27, -81, 198, -39, 24, -19, -59, -20, Inf, -6, -75, 157, Inf,
    -66, 62, -82, -49, -14, -87, -78, -37, -42, 5, 30, -50, 63, 93, -12, 36, -12,
    -70, 290, -7, -5
  ),
  T5_P2 = c(
    10.5461, 29.1796, 88.1755, 38.6234, 22.0569, 10.001, 13.4991, 14.8506, 19.519,
    95.617, 17.8181, 84.2492, 10.7215, 88.9674, 76.4191, 45.19, 10.8317, 31.8107,
    24.7983, 55.9251, 16.4832, 43.3698, 22.1386, 18.002, 79.2035, 12.6423,
    85.4316, 32.1691, 75.6754, 53.5464, 17.2313, 15.1174, 59.3047, 12.0834,
    82.7295, 81.1334, 10.7536, 30.5454, 12.4223, 9.50655, 5.0372, 8.15472,
    10.8593, 6.14378, 5.62171, 6.21806, 4.05756, 12.0619, 21.1074, 12.9207,
    13.4733, 32.445, 20.8236
  ),
  T5.T0.diff_P2 = c(
    -55, -64, 218, 6, 9797, -35, -17, 43, -68, 792, -76, 13, -87, 210, 292, 105,
    -55, 215, 42, 219, -31, 194, -77, 8, 160, -45, 496, -32, 117, 346, -3, Inf,
    174, -13, 541, 372, -53, -69, -39, 97, -83, -48, -41, -81, -60, -59, -54, -54,
    -9, -63, 142, 190, -25
  ),
  T5.T1.diff_P2 = c(
    -35, 82, 243, 51, 7, -48, 2, -75, -61, 431, 66, -10, -86, 584, 274, 314, -53,
    -58, -20, 253, -80, 231, 16, -71, 506, -61, 2, Inf, 598, 31, -9, Inf, -39, 19,
    34, 249, -50, -59, -20, -31, -54, -53, -25, -76, -49, -21, -66, -18, -19, -33,
    213, 708, 124
  ),
  T6_P2 = c(
    19.4431, 18.3498, 36.6816, 20.8788, 20.7658, 22.2604, 60.7024, 10.4609,
    98.5593, 62.8739, 71.6437, 22.755, 97.5644, 98.5916, 93.0426, 90.9254,
    72.4049, 86.6857, 13.1171, 28.2106, 28.0355, 54.2341, 10.2572, 12.291,
    56.9864, 10.5199, 68.7879, 32.782, 61.1115, 16.1887, 29.1698, 66.4892,
    23.1343, 10.191, 20.0709, 38.6514, 91.7475, 91.9235, 5.50988, 22.1358,
    22.3813, 12.6712, 8.06821, 22.8411, 15.0756, 6.79443, 26.9108, 18.2863,
    9.69334, 4.18761, 22.297, 24.9186, 48.9786
  )
)

from constructive.

krlmlr avatar krlmlr commented on July 2, 2024

Donw now.

from constructive.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.