Skip to content

Conversation

@yawn-c111
Copy link

@yawn-c111 yawn-c111 commented Sep 20, 2024

Related Issue

Implementation

Adjusted struct field types to ensure 16-byte memory alignment and C-compatibility on frequently accessed fields.

  • crates/mpz-core/src/block.rs
  • crates/mpz-garble-core/src/encoding/mod.rs
#[repr(C, align(16))]

pub struct Block([u8; 16]);

Move frequently accessed struct fields outside the loop.

  • crates/mpz-garble-core/src/generator.rs
  • crates/mpz-garble-core/src/evaluator.rs
let labels = &mut self.labels;
let gates = &mut self.gates;
while let Some(gate) = gates.next() {
    match gate {
        Gate::Xor { x, y, z, } => {
            let x_label = labels[x.id()];
            let y_label = labels[y.id()];
            labels[z.id()] = x_label ^ y_label;

Omitted field name shadowing.

  • crates/mpz-garble-core/src/generator.rs
  • crates/mpz-garble-core/src/evaluator.rs
Gate::Xor { x, y, z, } => {

Result

Garbling: Approximately 6-9% speed improvement
Evaluation: No significant change

image

garble/aes128
image

garble/aes128_batched
image

garble/aes128_with_hash
image

evaluate/aes128
image

@themighty1
Copy link
Collaborator

Hi, thank you for your work, I ported this PR to the latest dev and ran some benchmarks. I saw no speed-up in the native build.
Unfortunately, I wasn't able to bench the wasm build, it paniced with ""Uncaught (in promise) RuntimeError: unreachable"" and debugging in the browser is notoriously hard, so I didnt follow up.

I ran our bench harness at https://github.com/tlsnotary/tlsn/tree/main/crates/harness
with the below config before this PR and after and got pretty similar results.

config.toml [[group]] name = "upload_size" bandwidth = 1000 protocol_latency = 1 download-size = 100

[[bench]]
group = "upload_size"
upload-size = 1000

[[bench]]
group = "upload_size"
upload-size = 2000

[[bench]]
group = "upload_size"
upload-size = 4000

[[bench]]
group = "upload_size"
upload-size = 8000

[[bench]]
group = "upload_size"
upload-size = 10000

[[bench]]
group = "upload_size"
upload-size = 20000

[[bench]]
group = "upload_size"
upload-size = 30000

[[bench]]
group = "upload_size"
upload-size = 40000

before.csv group,name,latency,bandwidth,upload_size,download_size,defer_decryption,time_preprocess,time_online,time_total,uploaded_preprocess,downloaded_preprocess,uploaded_online,downloaded_online,uploaded_total,downloaded_total,heap_max_bytes ,,1,1000,1024,4096,true,946,441,1406,33561952,3424969,1018338,21101,34598107,3446070, ,,1,1000,1024,4096,true,946,396,1362,33561928,3425173,1018338,21101,34598083,3446274, ,,1,1000,1024,4096,true,923,414,1356,33561892,3425125,1018338,21101,34598047,3446226, upload_size,,1,1000,1000,100,true,636,608,1251,33356352,3361089,777763,21077,34139862,3382166, upload_size,,1,1000,1000,100,true,618,593,1218,33356448,3361173,777775,21077,34139970,3382250, upload_size,,1,1000,1000,100,true,614,599,1220,33356400,3361137,777775,21077,34139922,3382214, upload_size,,1,1000,1000,100,true,607,598,1211,33356388,3361161,777775,21077,34139910,3382238, upload_size,,1,1000,1000,100,true,612,592,1209,33356388,3361161,777775,21077,34139910,3382238, upload_size,,1,1000,1000,100,true,610,590,1205,33356436,3361089,777763,21089,34139946,3382178, upload_size,,1,1000,1000,100,true,617,596,1218,33356460,3361113,777763,21077,34139970,3382190, upload_size,,1,1000,1000,100,true,617,594,1216,33356388,3361149,777775,21077,34139910,3382226, upload_size,,1,1000,1000,100,true,624,590,1219,33356400,3361137,777763,21077,34139910,3382214, upload_size,,1,1000,1000,100,true,591,593,1189,33356412,3361125,777775,21077,34139934,3382202, upload_size,,1,1000,2000,100,true,1012,658,1682,46085276,3425509,1372525,22101,47466548,3447610, upload_size,,1,1000,2000,100,true,1039,656,1705,46085360,3425509,1372525,22101,47466632,3447610, upload_size,,1,1000,2000,100,true,1043,660,1714,46085852,3426097,1372525,22113,47467124,3448210, upload_size,,1,1000,2000,100,true,985,661,1655,46085372,3425461,1372525,22089,47466644,3447550, upload_size,,1,1000,2000,100,true,1004,653,1671,46085456,3425521,1372525,22089,47466728,3447610, upload_size,,1,1000,2000,100,true,1032,666,1711,46085288,3425521,1372525,22101,47466560,3447622, upload_size,,1,1000,2000,100,true,1059,659,1730,46085600,3425737,1372525,22101,47466872,3447838, upload_size,,1,1000,2000,100,true,1026,656,1695,46085288,3425521,1372525,22101,47466560,3447622, upload_size,,1,1000,2000,100,true,1010,662,1683,46085288,3425461,1372525,22101,47466560,3447562, upload_size,,1,1000,2000,100,true,1007,659,1679,46085300,3425437,1372525,22101,47466572,3447538, upload_size,,1,1000,4000,100,true,1247,797,2058,71747932,3425881,2556627,24113,74319306,3449994, upload_size,,1,1000,4000,100,true,1270,800,2083,71747920,3425905,2556627,24113,74319294,3450018, upload_size,,1,1000,4000,100,true,1236,805,2054,71747908,3425869,2556627,24113,74319282,3449982, upload_size,,1,1000,4000,100,true,1271,799,2082,71747860,3425893,2556627,24113,74319234,3450006, upload_size,,1,1000,4000,100,true,1236,792,2042,71747932,3425881,2556627,24113,74319306,3449994, upload_size,,1,1000,4000,100,true,1241,797,2052,71747884,3425869,2556627,24113,74319258,3449982, upload_size,,1,1000,4000,100,true,1256,797,2067,71747932,3425881,2556627,24113,74319306,3449994, upload_size,,1,1000,4000,100,true,1246,798,2057,71747920,3425881,2556627,24113,74319294,3449994, upload_size,,1,1000,4000,100,true,1284,790,2086,71747848,3425929,2556627,24113,74319222,3450042, upload_size,,1,1000,4000,100,true,1280,792,2088,71748124,3426097,2556627,24113,74319498,3450210, upload_size,,1,1000,8000,100,true,2197,1119,3334,123289170,4164529,4924915,28129,128240832,4192658, upload_size,,1,1000,8000,100,true,2234,1112,3366,123289254,4165045,4924915,28129,128240916,4193174, upload_size,,1,1000,8000,100,true,2203,1133,3355,123289326,4164997,4924915,28129,128240988,4193126, upload_size,,1,1000,8000,100,true,2210,1109,3339,123289326,4165093,4924915,28129,128240988,4193222, upload_size,,1,1000,8000,100,true,2246,1126,3391,123289458,4165129,4924915,28129,128241120,4193258, upload_size,,1,1000,8000,100,true,2199,1102,3322,123289290,4164937,4924915,28129,128240952,4193066, upload_size,,1,1000,8000,100,true,2207,1109,3337,123289254,4164697,4924915,28129,128240916,4192826, upload_size,,1,1000,8000,100,true,2215,1107,3344,123289230,4164997,4924915,28141,128240892,4193138, upload_size,,1,1000,8000,100,true,2234,1117,3370,123289278,4165033,4924915,28141,128240940,4193174, upload_size,,1,1000,8000,100,true,2224,1102,3345,123289290,4164937,4924915,28129,128240952,4193066, upload_size,,1,1000,10000,100,true,3017,1286,4334,149165482,4231001,6109065,30241,155307294,4261242, upload_size,,1,1000,10000,100,true,3023,1294,4348,149165398,4230773,6109065,30193,155307210,4261014, upload_size,,1,1000,10000,100,true,3034,1297,4365,149165446,4230605,6109065,30181,155307258,4260834, upload_size,,1,1000,10000,100,true,3059,1306,4395,149165410,4230629,6109065,30241,155307222,4260870, upload_size,,1,1000,10000,100,true,2990,1264,4286,149165386,4230749,6109065,30241,155307198,4260990, upload_size,,1,1000,10000,100,true,2997,1308,4335,149165386,4230701,6109077,30253,155307210,4260954, upload_size,,1,1000,10000,100,true,3011,1313,4368,149165422,4230725,6109065,30241,155307234,4260966, upload_size,,1,1000,10000,100,true,3014,1312,4356,149165614,4231361,6109065,30181,155307426,4261542, upload_size,,1,1000,10000,100,true,2997,1255,4283,149165710,4231697,6109065,30181,155307522,4261878, upload_size,,1,1000,10000,100,true,2991,1291,4313,149165398,4230749,6109065,30241,155307210,4260990, upload_size,,1,1000,20000,100,true,5346,2149,7544,277905290,4299081,12032313,40401,290000418,4339518, upload_size,,1,1000,20000,100,true,5345,2109,7514,277905278,4299105,12032337,40377,290000430,4339506, upload_size,,1,1000,20000,100,true,5304,2074,7430,277905230,4299081,12032337,40401,290000382,4339506, upload_size,,1,1000,20000,100,true,5363,2074,7487,277905254,4299069,12032313,40425,290000382,4339506, upload_size,,1,1000,20000,100,true,5304,2094,7471,277905254,4299081,12032337,40377,290000406,4339482, upload_size,,1,1000,20000,100,true,5309,2082,7440,277905290,4299093,12032337,40401,290000442,4339530, upload_size,,1,1000,20000,100,true,5325,2081,7456,277905278,4299081,12032337,40401,290000430,4339482, upload_size,,1,1000,20000,100,true,5303,2139,7491,277905266,4299081,12032337,40437,290000418,4339518, upload_size,,1,1000,20000,100,true,5308,2124,7482,277905230,4299093,12032337,40377,290000382,4339494, upload_size,,1,1000,20000,100,true,5301,2123,7474,277905290,4299093,12032313,40377,290000418,4339494, upload_size,,1,1000,30000,100,true,8903,2799,11788,406858634,4368973,17953075,50569,424904524,4419578, upload_size,,1,1000,30000,100,true,8841,2810,11737,406858658,4368973,17953099,50521,424904572,4419542, upload_size,,1,1000,30000,100,true,8830,2846,11773,406858658,4369777,17953099,50533,424904572,4420358, upload_size,,1,1000,30000,100,true,8817,2826,11727,406858658,4369033,17953075,50569,424904548,4419614, upload_size,,1,1000,30000,100,true,8921,2857,11859,406858610,4368985,17953075,50521,424904500,4419506, upload_size,,1,1000,30000,100,true,8800,2848,11731,406858622,4370041,17953075,50521,424904512,4420610, upload_size,,1,1000,30000,100,true,8803,2812,11699,406858646,4369897,17953099,50521,424904560,4420466, upload_size,,1,1000,30000,100,true,8805,2891,11792,406858658,4370017,17953075,50581,424904548,4420634, upload_size,,1,1000,30000,100,true,8822,2882,11785,406858670,4369777,17953075,50533,424904560,4420334, upload_size,,1,1000,30000,100,true,8847,2859,11787,406858598,4369765,17953075,50521,424904488,4420334, upload_size,,1,1000,40000,100,true,10114,3654,13861,535598262,4373461,23876275,60717,559597404,4434178, upload_size,,1,1000,40000,100,true,10025,3612,13731,535598214,4373473,23876287,61041,559597368,4434526, upload_size,,1,1000,40000,100,true,10067,3637,13803,535598238,4373461,23876287,61041,559597392,4434514, upload_size,,1,1000,40000,100,true,10148,3598,13846,535598262,4373461,23876275,60717,559597404,4434226, upload_size,,1,1000,40000,100,true,10101,3694,13905,535598262,4373473,23876275,60705,559597404,4434202, upload_size,,1,1000,40000,100,true,10131,3557,13785,535598262,4373473,23876275,60705,559597404,4434214, upload_size,,1,1000,40000,100,true,10099,3669,13862,535598274,4373473,23876275,60693,559597416,4434190, upload_size,,1,1000,40000,100,true,10134,3645,13884,535598250,4373449,23876275,60705,559597392,4434154, upload_size,,1,1000,40000,100,true,10094,3785,13989,535598238,4373461,23876287,61053,559597392,4434514, upload_size,,1,1000,40000,100,true,10110,3641,13848,535598262,4373461,23876275,60705,559597404,4434190,
after.csv group,name,latency,bandwidth,upload_size,download_size,defer_decryption,time_preprocess,time_online,time_total,uploaded_preprocess,downloaded_preprocess,uploaded_online,downloaded_online,uploaded_total,downloaded_total,heap_max_bytes ,,1,1000,1024,4096,true,971,427,1416,33561940,3424897,1018338,21101,34598095,3445998, ,,1,1000,1024,4096,true,924,392,1334,33561940,3425113,1018338,21101,34598095,3446214, ,,1,1000,1024,4096,true,920,403,1339,33561928,3425125,1018350,21101,34598095,3446226, upload_size,,1,1000,1000,100,true,639,614,1260,33356412,3361149,777763,21077,34139922,3382226, upload_size,,1,1000,1000,100,true,611,604,1220,33356436,3361113,777763,21089,34139946,3382202, upload_size,,1,1000,1000,100,true,634,608,1248,33356388,3361161,777763,21077,34139898,3382238, upload_size,,1,1000,1000,100,true,614,606,1224,33356388,3361089,777775,21089,34139910,3382178, upload_size,,1,1000,1000,100,true,599,604,1208,33356436,3361125,777775,21077,34139958,3382202, upload_size,,1,1000,1000,100,true,603,602,1210,33356400,3361161,777763,21077,34139910,3382238, upload_size,,1,1000,1000,100,true,610,611,1227,33356388,3361149,777775,21077,34139910,3382226, upload_size,,1,1000,1000,100,true,577,601,1186,33356496,3361125,777775,21089,34140018,3382214, upload_size,,1,1000,1000,100,true,614,607,1227,33356376,3361137,777763,21077,34139886,3382214, upload_size,,1,1000,1000,100,true,597,602,1203,33356364,3361173,777775,21077,34139886,3382250, upload_size,,1,1000,2000,100,true,1004,670,1684,46085312,3425509,1372525,22101,47466584,3447610, upload_size,,1,1000,2000,100,true,1040,665,1716,46085768,3425941,1372525,22101,47467040,3448042, upload_size,,1,1000,2000,100,true,985,668,1661,46085324,3425461,1372525,22101,47466596,3447562, upload_size,,1,1000,2000,100,true,978,679,1668,46085312,3425521,1372525,22101,47466584,3447622, upload_size,,1,1000,2000,100,true,981,668,1659,46085276,3425449,1372525,22101,47466548,3447550, upload_size,,1,1000,2000,100,true,1038,666,1715,46085564,3425737,1372525,22101,47466836,3447838, upload_size,,1,1000,2000,100,true,1039,668,1718,46085420,3425497,1372525,22101,47466692,3447598, upload_size,,1,1000,2000,100,true,1048,672,1733,46085468,3425509,1372525,22101,47466740,3447610, upload_size,,1,1000,2000,100,true,1000,668,1680,46085336,3425461,1372525,22101,47466608,3447562, upload_size,,1,1000,2000,100,true,995,669,1676,46085336,3425497,1372525,22101,47466608,3447598, upload_size,,1,1000,4000,100,true,1246,804,2064,71747932,3425881,2556627,24113,74319306,3449994, upload_size,,1,1000,4000,100,true,1266,805,2083,71748040,3426001,2556627,24113,74319414,3450114, upload_size,,1,1000,4000,100,true,1234,814,2061,71747872,3425893,2556627,24113,74319246,3450006, upload_size,,1,1000,4000,100,true,1238,805,2053,71747920,3425881,2556627,24113,74319294,3449994, upload_size,,1,1000,4000,100,true,1258,812,2083,71747896,3425893,2556627,24113,74319270,3450006, upload_size,,1,1000,4000,100,true,1237,817,2068,71747956,3425869,2556627,24113,74319330,3449982, upload_size,,1,1000,4000,100,true,1287,813,2114,71747920,3425905,2556627,24113,74319294,3450018, upload_size,,1,1000,4000,100,true,1269,816,2101,71747836,3425905,2556627,24113,74319210,3450018, upload_size,,1,1000,4000,100,true,1262,804,2080,71748148,3426193,2556627,24113,74319522,3450306, upload_size,,1,1000,4000,100,true,1287,828,2129,71747956,3425917,2556627,24113,74319330,3450030, upload_size,,1,1000,8000,100,true,2199,1108,3328,123289422,4165141,4924915,28129,128241084,4193270, upload_size,,1,1000,8000,100,true,2197,1090,3306,123289278,4164949,4924915,28129,128240940,4193078, upload_size,,1,1000,8000,100,true,2215,1103,3338,123289422,4165021,4924915,28129,128241084,4193150, upload_size,,1,1000,8000,100,true,2228,1121,3369,123289494,4165477,4924915,28129,128241156,4193606, upload_size,,1,1000,8000,100,true,2232,1107,3358,123289470,4165309,4924915,28141,128241132,4193450, upload_size,,1,1000,8000,100,true,2228,1102,3348,123289338,4165189,4924915,28129,128241000,4193318, upload_size,,1,1000,8000,100,true,2238,1091,3348,123289398,4165201,4924915,28129,128241060,4193330, upload_size,,1,1000,8000,100,true,2209,1109,3339,123289350,4165333,4924915,28153,128241012,4193486, upload_size,,1,1000,8000,100,true,2194,1106,3324,123289338,4165093,4924915,28129,128241000,4193222, upload_size,,1,1000,8000,100,true,2194,1085,3299,123289338,4165237,4924915,28141,128241000,4193378, upload_size,,1,1000,10000,100,true,2977,1250,4253,149165554,4231337,6109065,30241,155307366,4261578, upload_size,,1,1000,10000,100,true,3009,1238,4278,149165758,4231505,6109065,30241,155307570,4261746, upload_size,,1,1000,10000,100,true,3010,1263,4300,149165698,4231409,6109065,30241,155307510,4261650, upload_size,,1,1000,10000,100,true,2995,1254,4282,149165782,4231409,6109065,30241,155307594,4261650, upload_size,,1,1000,10000,100,true,2989,1281,4301,149165458,4230605,6109065,30193,155307270,4260846, upload_size,,1,1000,10000,100,true,2929,1243,4203,149165386,4230725,6109065,30193,155307198,4260966, upload_size,,1,1000,10000,100,true,2909,1233,4173,149165386,4230725,6109065,30253,155307198,4260978, upload_size,,1,1000,10000,100,true,2914,1250,4199,149165386,4230761,6109065,30193,155307198,4261002, upload_size,,1,1000,10000,100,true,2908,1241,4175,149165386,4230713,6109065,30193,155307198,4260942, upload_size,,1,1000,10000,100,true,2920,1226,4197,149165446,4230953,6109065,30241,155307258,4261194, upload_size,,1,1000,20000,100,true,5321,2034,7406,277905278,4299081,12032313,40377,290000406,4339482, upload_size,,1,1000,20000,100,true,5305,2054,7418,277905278,4299093,12032337,40377,290000430,4339494, upload_size,,1,1000,20000,100,true,5364,2033,7458,277905278,4299093,12032337,40401,290000430,4339530, upload_size,,1,1000,20000,100,true,5317,2060,7428,277905278,4298925,12032313,40401,290000406,4339362, upload_size,,1,1000,20000,100,true,5231,2029,7311,277905278,4299081,12032337,40377,290000430,4339482, upload_size,,1,1000,20000,100,true,5332,2106,7491,277905302,4298925,12032313,40401,290000430,4339326, upload_size,,1,1000,20000,100,true,5314,2073,7447,277905242,4299081,12032337,40425,290000394,4339518, upload_size,,1,1000,20000,100,true,5312,2055,7421,277905278,4299081,12032337,40401,290000430,4339482, upload_size,,1,1000,20000,100,true,5309,2087,7445,277905278,4299081,12032313,40401,290000406,4339518, upload_size,,1,1000,20000,100,true,5300,2116,7467,277905278,4299093,12032337,40401,290000430,4339530, upload_size,,1,1000,30000,100,true,8816,2749,11647,406858658,4369033,17953075,50557,424904548,4419602, upload_size,,1,1000,30000,100,true,8808,2701,11592,406858670,4369777,17953099,50521,424904584,4420298, upload_size,,1,1000,30000,100,true,8807,2824,11717,406858670,4370029,17953075,50533,424904560,4420598, upload_size,,1,1000,30000,100,true,8847,2758,11691,406858646,4370029,17953075,50521,424904536,4420550, upload_size,,1,1000,30000,100,true,8766,2748,11598,406858646,4370017,17953075,50545,424904536,4420574, upload_size,,1,1000,30000,100,true,8841,2797,11720,406858622,4370041,17953075,50545,424904512,4420610, upload_size,,1,1000,30000,100,true,8752,2781,11616,406858658,4370041,17953075,50581,424904548,4420646, upload_size,,1,1000,30000,100,true,8845,2853,11779,406858658,4369777,17953075,50533,424904548,4420346, upload_size,,1,1000,30000,100,true,8799,2773,11653,406858658,4370029,17953075,50533,424904548,4420562, upload_size,,1,1000,30000,100,true,8813,2758,11654,406858658,4370041,17953075,50533,424904548,4420574, upload_size,,1,1000,40000,100,true,10028,3657,13777,535598214,4373521,23876287,61065,559597368,4434646, upload_size,,1,1000,40000,100,true,10013,3495,13631,535598250,4373521,23876287,61041,559597404,4434562, upload_size,,1,1000,40000,100,true,10032,3637,13770,535598250,4373545,23876287,61041,559597404,4434586, upload_size,,1,1000,40000,100,true,10108,3584,13792,535598262,4373545,23876275,60705,559597404,4434286, upload_size,,1,1000,40000,100,true,10050,3579,13745,535598202,4373461,23876287,61041,559597356,4434514, upload_size,,1,1000,40000,100,true,10020,3539,13654,535598262,4373545,23876287,61053,559597416,4434598, upload_size,,1,1000,40000,100,true,10056,3668,13820,535598250,4373473,23876287,61041,559597404,4434538, upload_size,,1,1000,40000,100,true,10061,3614,13769,535598250,4373473,23876287,61053,559597404,4434550, upload_size,,1,1000,40000,100,true,10025,3724,13842,535598262,4373545,23876287,61065,559597416,4434610, upload_size,,1,1000,40000,100,true,10013,3560,13685,535598262,4373509,23876287,61041,559597416,4434550,

@themighty1 themighty1 closed this Nov 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants