Skip to content

Latest commit

 

History

History
253 lines (225 loc) · 41.1 KB

Benchmark_Results_Npgsql.md

File metadata and controls

253 lines (225 loc) · 41.1 KB

Use

Run all:

sudo dotnet run -c RELEASE

Commandline Arguments

Any Categories

Run any tests that have any of the properties provided in the argument anyCategories

sudo dotnet run -c RELEASE -- --anyCategories Copy

Filter

sudo dotnet run -c RELEASE -- --filter="*SystemTextJsonDeserializationBasic*"

Results

SQL

SQL Inserts

Method ObjectsPerSave SaveIterations Mean [ms] Error [ms] StdDev [ms] Median [ms] Gen 0 Gen 1 Gen 2 Allocated [B]
NpgSqlInsert_SingularCommand_TypedValue_Prepared 1 10 7.389 ms 0.3061 ms 0.8978 ms 7.422 ms - - - 5,327 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared_Async 1 10 7.607 ms 0.2594 ms 0.7483 ms 7.572 ms - - - 17,381 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 1 10 7.614 ms 0.2180 ms 0.6324 ms 7.609 ms - - - 5,887 B
NpgsqlInsert_Batched_Boxed_Value 1 10 7.860 ms 0.2671 ms 0.7834 ms 7.839 ms - - - 17,555 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 1 10 8.220 ms 0.3287 ms 0.9587 ms 8.249 ms - - - 18,116 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_Value 1 10 8.283 ms 0.2834 ms 0.8221 ms 8.245 ms - - - 17,555 B
NpgSqlInsert_SingularCommand_TypedValue 1 10 8.487 ms 0.3335 ms 0.9782 ms 8.488 ms - - - 17,948 B
NpgsqlCopy 2 10 8.488 ms 0.3149 ms 0.8985 ms 8.385 ms - - - 18,653 B
NpgsqlCopy 10 10 8.493 ms 0.3423 ms 0.9931 ms 8.380 ms - - - 31,448 B
NpgsqlCopyAsync 2 10 8.511 ms 0.4514 ms 1.2804 ms 8.399 ms - - - 32,567 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_Value 2 10 8.513 ms 0.2883 ms 0.8317 ms 8.467 ms - - - 29,176 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_NpgsqlValue 1 10 8.522 ms 0.3300 ms 0.9520 ms 8.435 ms - - - 17,555 B
NpgsqlCopyToPartitionTable 2 10 8.622 ms 0.3767 ms 1.0989 ms 8.471 ms - - - 18,956 B
NpgsqlCopyToPartitionTable 10 10 8.633 ms 0.4077 ms 1.1827 ms 8.622 ms - - - 31,786 B
NpgsqlInsert_Batched_TypedValue 2 10 8.714 ms 0.2948 ms 0.8553 ms 8.771 ms - - - 28,839 B
NpgsqlCopyAsync 10 10 8.784 ms 0.3637 ms 1.0495 ms 8.683 ms 7.8125 - - 45,433 B
NpgsqlInsert_Batched_Boxed_Value 2 10 8.830 ms 0.2743 ms 0.8001 ms 8.864 ms - - - 29,156 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_NpgsqlValue 2 10 8.866 ms 0.3034 ms 0.8753 ms 8.942 ms - - - 29,164 B
NpgsqlInsert_Batched_TypedValue 1 10 8.884 ms 0.3914 ms 1.1417 ms 8.913 ms - - - 17,399 B
NpgsqlCopy 1 10 9.077 ms 0.4424 ms 1.2764 ms 8.920 ms - - - 16,988 B
NpgsqlCopyAsync 1 10 9.491 ms 0.6669 ms 1.9558 ms 8.711 ms - - - 31,078 B
NpgsqlCopyToPartitionTable 1 10 9.673 ms 0.5675 ms 1.6464 ms 9.653 ms - - - 17,385 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 2 10 9.787 ms 0.4636 ms 1.3226 ms 9.707 ms 46.8750 - - 245,237 B
EfCoreInsert 1 10 9.933 ms 0.4946 ms 1.4190 ms 9.874 ms 39.0625 - - 215,468 B
EfCoreInsert 2 10 10.320 ms 0.6146 ms 1.7534 ms 9.983 ms 62.5000 - - 336,312 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 1 10 10.476 ms 0.7894 ms 2.3028 ms 9.846 ms 31.2500 - - 169,061 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_Value 10 10 11.432 ms 0.5864 ms 1.7106 ms 11.615 ms 15.6250 - - 123,736 B
NpgsqlCopyToPartitionTable 100 10 11.825 ms 0.6932 ms 2.0220 ms 11.457 ms 31.2500 - - 175,842 B
NpgsqlInsert_Batched_Boxed_Value 10 10 12.099 ms 0.4814 ms 1.3811 ms 12.002 ms 15.6250 - - 123,736 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_NpgsqlValue 10 10 12.434 ms 0.5515 ms 1.6261 ms 12.431 ms 15.6250 - - 123,733 B
NpgsqlCopy 100 10 12.541 ms 0.5640 ms 1.6182 ms 12.360 ms 31.2500 - - 175,466 B
NpgsqlInsert_Batched_TypedValue 10 10 12.745 ms 0.4876 ms 1.4069 ms 12.610 ms 15.6250 - - 122,136 B
NpgsqlCopyAsync 100 10 13.212 ms 0.6042 ms 1.7529 ms 13.273 ms 31.2500 - - 189,425 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 2 10 14.093 ms 0.5125 ms 1.4868 ms 13.875 ms - - - 8,768 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 10 10 14.119 ms 1.3719 ms 3.9802 ms 13.029 ms 156.2500 31.2500 - 854,218 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 2 10 14.753 ms 0.4039 ms 1.1782 ms 14.612 ms - - - 9,900 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared_Async 2 10 14.909 ms 0.4430 ms 1.2568 ms 14.879 ms - - - 32,240 B
NpgSqlInsert_SingularCommand_TypedValue 2 10 15.985 ms 0.5169 ms 1.5078 ms 15.896 ms - - - 35,573 B
EfCoreInsert 10 10 16.264 ms 0.8828 ms 2.5187 ms 16.154 ms 250.0000 62.5000 - 1,301,135 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 2 10 16.410 ms 0.5310 ms 1.5321 ms 16.597 ms - - - 35,870 B
NpgsqlCopyWithWork 2 10 22.587 ms 1.1090 ms 3.2700 ms 22.349 ms - - - 18,799 B
NpgsqlCopyWithWorkAsync 2 10 22.608 ms 0.5456 ms 1.5829 ms 22.554 ms - - - 32,942 B
NpgsqlCopyWithWorkAsync 10 10 22.608 ms 0.5147 ms 1.5094 ms 22.583 ms - - - 45,609 B
NpgsqlCopyWithWorkAsyncConfigureAwaitFalse 10 10 23.212 ms 0.7548 ms 2.2019 ms 22.914 ms - - - 45,665 B
NpgsqlCopyWithWork 10 10 23.295 ms 1.0845 ms 3.1636 ms 22.958 ms - - - 31,622 B
NpgsqlCopyWithWorkAsyncConfigureAwaitFalse 2 10 23.424 ms 0.7140 ms 2.1053 ms 23.305 ms - - - 32,878 B
NpgsqlCopyWithWorkAsyncConfigureAwaitFalse 1 10 24.123 ms 0.7089 ms 2.0678 ms 23.942 ms - - - 31,363 B
NpgsqlCopyWithWorkAsync 1 10 24.183 ms 0.7393 ms 2.1682 ms 23.925 ms - - - 31,355 B
NpgsqlCopyWithWorkAsync 100 10 25.228 ms 0.7817 ms 2.2177 ms 25.214 ms 31.2500 - - 189,586 B
NpgsqlCopyWithWorkAsyncConfigureAwaitFalse 100 10 25.234 ms 1.0066 ms 2.9204 ms 24.442 ms - - - 189,838 B
NpgsqlCopyWithWork 1 10 25.257 ms 1.4324 ms 4.1783 ms 25.391 ms - - - 17,211 B
NpgsqlCopyWithWork 100 10 25.653 ms 1.6145 ms 4.7097 ms 24.583 ms - - - 175,651 B
NpgsqlInsert_Batched_Boxed_Value 100 10 27.672 ms 0.5437 ms 1.0983 ms 27.369 ms 250.0000 62.5000 - 1,192,568 B
NpgsqlInsert_Batched_TypedValue 100 10 27.709 ms 0.5485 ms 1.3558 ms 27.196 ms 230.7692 76.9231 - 1,176,658 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_Value 100 10 28.009 ms 0.5511 ms 1.2440 ms 27.804 ms 250.0000 62.5000 - 1,192,568 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_NpgsqlValue 100 10 28.756 ms 0.6222 ms 1.7752 ms 28.220 ms 250.0000 62.5000 - 1,192,562 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 100 10 52.924 ms 2.4648 ms 7.0721 ms 51.759 ms 1272.7273 636.3636 - 7,679,636 B
EfCoreInsert 100 10 57.632 ms 2.0989 ms 6.1556 ms 56.418 ms 1888.8889 555.5556 - 12,126,790 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 10 10 70.377 ms 2.4523 ms 7.1534 ms 69.439 ms - - - 36,398 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 10 10 71.967 ms 2.4015 ms 7.0053 ms 71.591 ms - - - 41,987 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared_Async 10 10 73.697 ms 3.1551 ms 9.2533 ms 73.615 ms - - - 150,576 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 1 100 75.151 ms 2.7974 ms 8.0712 ms 74.618 ms - - - 41,957 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 1 100 76.903 ms 2.9750 ms 8.5358 ms 76.921 ms - - - 36,383 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared_Async 1 100 77.455 ms 3.8609 ms 11.3234 ms 74.846 ms - - - 150,792 B
NpgSqlInsert_SingularCommand_TypedValue 10 10 79.085 ms 3.3097 ms 9.5491 ms 78.419 ms - - - 176,528 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 10 10 80.709 ms 3.3258 ms 9.8062 ms 79.486 ms - - - 178,097 B
NpgsqlCopy 1 100 80.829 ms 4.0552 ms 11.8293 ms 80.851 ms - - - 168,211 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_NpgsqlValue 1 100 81.071 ms 3.5500 ms 10.1283 ms 79.863 ms - - - 172,562 B
NpgsqlInsert_Batched_TypedValue 1 100 81.926 ms 3.7293 ms 10.8195 ms 80.950 ms - - - 170,928 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_Value 1 100 82.569 ms 3.2659 ms 9.6297 ms 81.477 ms - - - 172,528 B
NpgsqlCopyAsync 1 100 82.621 ms 4.4623 ms 12.8748 ms 80.862 ms - - - 303,965 B
NpgsqlInsert_Batched_Boxed_Value 1 100 84.430 ms 3.7234 ms 10.9787 ms 83.940 ms - - - 172,504 B
NpgsqlCopyToPartitionTable 10 100 84.444 ms 3.3412 ms 9.5325 ms 84.733 ms - - - 315,991 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 1 100 84.691 ms 4.1951 ms 12.2374 ms 82.207 ms - - - 178,097 B
NpgsqlCopyToPartitionTable 2 100 85.341 ms 4.6991 ms 13.7817 ms 83.596 ms - - - 187,933 B
NpgSqlInsert_SingularCommand_TypedValue 1 100 86.282 ms 3.8741 ms 11.3009 ms 86.690 ms - - - 176,509 B
NpgsqlCopyAsync 10 100 87.022 ms 4.3142 ms 12.4473 ms 84.884 ms - - - 450,018 B
NpgsqlCopyToPartitionTable 1 100 88.900 ms 4.5950 ms 13.4039 ms 87.653 ms - - - 171,806 B
NpgsqlCopy 2 100 89.231 ms 5.2517 ms 15.1523 ms 89.327 ms - - - 184,658 B
NpgsqlInsert_Batched_Boxed_Value 2 100 91.654 ms 3.4918 ms 10.1858 ms 89.455 ms - - - 288,528 B
NpgsqlInsert_Batched_TypedValue 2 100 92.092 ms 4.4397 ms 13.0209 ms 89.911 ms - - - 285,362 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_NpgsqlValue 2 100 92.487 ms 4.5390 ms 13.3121 ms 90.349 ms - - - 288,562 B
NpgsqlCopyAsync 2 100 92.570 ms 7.4119 ms 21.8542 ms 84.823 ms - - - 319,798 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_Value 2 100 93.614 ms 4.2055 ms 12.2010 ms 91.807 ms - - - 288,528 B
NpgsqlCopy 10 100 94.887 ms 5.3361 ms 15.4809 ms 94.829 ms - - - 312,895 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 2 100 96.493 ms 6.7871 ms 19.4734 ms 94.703 ms 333.3333 - - 2,002,695 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 1 100 101.094 ms 7.9073 ms 22.8145 ms 99.576 ms 166.6667 - - 1,246,628 B
EfCoreInsert 2 100 113.414 ms 9.7419 ms 28.2631 ms 105.983 ms 2000.0000 - - 10,190,424 B
EfCoreInsert 1 100 121.109 ms 9.7366 ms 28.5557 ms 114.052 ms 1000.0000 166.6667 - 5,351,041 B
NpgsqlCopyToPartitionTable 100 100 127.854 ms 7.5400 ms 21.5120 ms 125.006 ms 250.0000 - - 1,756,354 B
NpgsqlCopyAsync 100 100 128.236 ms 7.5311 ms 21.8492 ms 125.134 ms 400.0000 - - 1,890,426 B
NpgsqlInsert_Batched_TypedValue 10 100 134.447 ms 8.0417 ms 23.4579 ms 133.638 ms 250.0000 - - 1,218,212 B
NpgsqlCopy 100 100 136.450 ms 9.8470 ms 28.5680 ms 132.015 ms 250.0000 - - 1,753,522 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_Value 10 100 136.510 ms 7.7405 ms 22.5794 ms 132.508 ms 200.0000 - - 1,234,168 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_NpgsqlValue 10 100 138.078 ms 7.7998 ms 22.8755 ms 136.154 ms 250.0000 - - 1,234,212 B
NpgsqlInsert_Batched_Boxed_Value 10 100 138.723 ms 7.9501 ms 23.0648 ms 136.624 ms 250.0000 - - 1,234,212 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 10 100 139.149 ms 11.4348 ms 32.6242 ms 135.089 ms 1400.0000 600.0000 - 8,034,198 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 2 100 144.550 ms 5.4019 ms 15.8427 ms 143.770 ms - - - 82,148 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared_Async 2 100 151.648 ms 5.3719 ms 15.7548 ms 151.185 ms - - - 298,876 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 2 100 151.798 ms 5.5228 ms 16.1974 ms 150.853 ms - - - 70,932 B
NpgSqlInsert_SingularCommand_TypedValue 2 100 160.169 ms 6.7772 ms 19.8763 ms 159.982 ms - - - 352,696 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 2 100 164.546 ms 6.6332 ms 19.4540 ms 162.702 ms - - - 355,812 B
NpgsqlCopyWithWorkAsyncConfigureAwaitFalse 1 100 214.436 ms 4.7337 ms 13.8083 ms 214.094 ms - - - 307,456 B
NpgsqlCopyWithWorkAsync 1 100 214.573 ms 5.2939 ms 14.8445 ms 213.600 ms - - - 305,640 B
NpgsqlCopyWithWorkAsyncConfigureAwaitFalse 2 100 215.386 ms 5.6785 ms 16.3837 ms 213.066 ms - - - 321,648 B
NpgsqlCopyWithWorkAsync 2 100 219.073 ms 5.4352 ms 16.0259 ms 218.970 ms - - - 322,845 B
NpgsqlCopyWithWorkAsync 10 100 221.900 ms 5.7014 ms 16.8106 ms 221.149 ms - - - 451,147 B
NpgsqlCopyWithWorkAsyncConfigureAwaitFalse 10 100 223.887 ms 6.6759 ms 19.2616 ms 224.266 ms - - - 451,155 B
NpgsqlCopyWithWork 10 100 227.737 ms 9.6472 ms 28.4449 ms 225.869 ms - - - 314,061 B
NpgsqlCopyWithWork 2 100 228.556 ms 11.4511 ms 33.2219 ms 224.152 ms - - - 185,877 B
NpgsqlCopyWithWork 1 100 229.591 ms 9.8735 ms 28.8014 ms 226.429 ms - - - 169,816 B
EfCoreInsert 10 100 250.450 ms 19.9844 ms 57.6594 ms 236.789 ms 10000.0000 1000.0000 - 48,867,088 B
NpgsqlCopyWithWorkAsync 100 100 252.574 ms 8.0473 ms 22.6976 ms 249.936 ms 333.3333 - - 1,891,448 B
NpgsqlCopyWithWorkAsyncConfigureAwaitFalse 100 100 252.948 ms 7.0243 ms 20.0406 ms 248.620 ms 333.3333 - - 1,890,251 B
NpgsqlCopyWithWork 100 100 265.488 ms 15.2679 ms 45.0178 ms 264.743 ms 333.3333 - - 1,753,816 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_NpgsqlValue 100 100 268.199 ms 3.4410 ms 2.6865 ms 267.712 ms 2500.0000 500.0000 - 11,925,568 B
NpgsqlInsert_Batched_Boxed_Value 100 100 270.015 ms 4.3197 ms 5.9128 ms 268.141 ms 2500.0000 500.0000 - 11,923,972 B
NpgsqlInsert_Batched_Boxed_NpgsqlDbType_Value 100 100 270.315 ms 4.7210 ms 5.4367 ms 269.446 ms 2500.0000 500.0000 - 11,923,972 B
NpgsqlInsert_Batched_TypedValue 100 100 273.341 ms 4.8191 ms 3.7624 ms 273.563 ms 2500.0000 500.0000 - 11,765,604 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 100 100 532.815 ms 28.2682 ms 82.0113 ms 513.209 ms 12000.0000 3000.0000 - 75,483,952 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 100 10 713.710 ms 25.5601 ms 74.1545 ms 715.708 ms - - - 346,888 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared_Async 100 10 738.062 ms 20.9958 ms 61.2456 ms 735.745 ms - - - 1,483,816 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 100 10 741.285 ms 22.4201 ms 64.6871 ms 741.322 ms - - - 402,904 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 10 100 744.936 ms 21.6972 ms 62.9474 ms 732.383 ms - - - 402,720 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared_Async 10 100 748.416 ms 31.8767 ms 92.4801 ms 739.582 ms - - - 1,483,632 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 10 100 755.461 ms 24.8008 ms 71.9515 ms 747.696 ms - - - 346,888 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 100 10 774.169 ms 20.4970 ms 58.8098 ms 777.870 ms - - - 1,777,368 B
NpgSqlInsert_SingularCommand_TypedValue 100 10 807.361 ms 24.3752 ms 69.5438 ms 802.450 ms - - - 1,761,184 B
NpgSqlInsert_SingularCommand_TypedValue 10 100 828.554 ms 30.1801 ms 87.5578 ms 824.009 ms - - - 1,761,368 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 10 100 839.155 ms 35.2622 ms 103.4180 ms 828.578 ms - - - 1,777,368 B
EfCoreInsert 100 100 1,056.022 ms 20.4512 ms 18.1295 ms 1,050.361 ms 89000.0000 25000.0000 1000.0000 483,597,072 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 100 100 7,235.320 ms 142.7902 ms 242.4685 ms 7,240.602 ms - - - 3,442,368 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 100 100 7,290.868 ms 145.3492 ms 300.1714 ms 7,242.689 ms - - - 4,001,832 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared_Async 100 100 7,472.041 ms 148.5431 ms 335.2866 ms 7,474.613 ms 3000.0000 - - 14,798,648 B
NpgSqlInsert_SingularCommand_TypedValue 100 100 7,880.655 ms 156.2698 ms 277.7694 ms 7,916.975 ms 3000.0000 - - 17,601,032 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 100 100 8,002.440 ms 159.5381 ms 356.8298 ms 8,048.477 ms 3000.0000 - - 17,760,848 B
With more complex ComplexTestObject

With more columns, COPY takes a clear lead.

Method ObjectsPerSave SaveIterations Mean [ms] Error [ms] StdDev [ms] Median [ms] Gen 0 Gen 1 Allocated [B]
NpgsqlCopy 2 10 5.979 ms 0.1189 ms 0.3112 ms 5.961 ms 7.8125 - 39,648 B
NpgsqlCopy 10 10 6.607 ms 0.1401 ms 0.4066 ms 6.522 ms 7.8125 - 65,947 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 2 10 8.307 ms 0.2130 ms 0.6042 ms 8.108 ms 62.5000 - 357,288 B
EfCoreInsert 2 10 8.762 ms 0.2378 ms 0.6861 ms 8.580 ms 93.7500 15.6250 488,013 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 2 10 10.449 ms 0.2485 ms 0.7208 ms 10.363 ms - - 16,788 B
NpgSqlInsert_SingularCommand_Typed_NpgsqlDbType_NpgsqlValue 2 10 10.827 ms 0.3179 ms 0.8595 ms 10.563 ms - - 66,718 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 2 10 10.965 ms 0.2547 ms 0.7390 ms 10.984 ms - - 13,340 B
NpgSqlInsert_SingularCommand_Typed_NpgsqlDbType_TypedValue 2 10 11.379 ms 0.2447 ms 0.7138 ms 11.360 ms - - 63,244 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 2 10 11.386 ms 0.2592 ms 0.7436 ms 11.355 ms - - 64,681 B
NpgSqlInsert_SingularCommand_TypedValue 2 10 11.691 ms 0.2690 ms 0.7888 ms 11.735 ms - - 63,236 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 10 10 12.791 ms 0.2402 ms 0.5802 ms 12.776 ms 296.8750 93.7500 1,398,330 B
EfCoreInsert 10 10 14.690 ms 0.2912 ms 0.7824 ms 14.621 ms 421.8750 140.6250 2,043,450 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 10 10 51.719 ms 1.1283 ms 3.2913 ms 51.210 ms - - 71,274 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 10 10 52.791 ms 1.3933 ms 3.9977 ms 52.458 ms - - 54,397 B
NpgSqlInsert_SingularCommand_TypedValue 10 10 56.948 ms 1.6744 ms 4.7771 ms 56.296 ms - - 314,863 B
NpgSqlInsert_SingularCommand_Typed_NpgsqlDbType_TypedValue 10 10 57.287 ms 1.5379 ms 4.4372 ms 56.967 ms - - 314,852 B
NpgSqlInsert_SingularCommand_Typed_NpgsqlDbType_NpgsqlValue 10 10 57.724 ms 1.7283 ms 5.0688 ms 57.163 ms - - 331,672 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 10 10 57.882 ms 1.5635 ms 4.5608 ms 56.830 ms - - 322,006 B
NpgsqlCopy 2 100 59.376 ms 1.4250 ms 4.0886 ms 58.194 ms - - 394,348 B
NpgsqlCopy 10 100 64.760 ms 1.5839 ms 4.5953 ms 64.288 ms 125.0000 - 658,007 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 2 100 77.698 ms 1.5477 ms 3.8254 ms 77.009 ms 571.4286 142.8571 3,109,686 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 2 100 100.856 ms 2.0459 ms 5.7370 ms 100.128 ms - - 139,357 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 2 100 101.461 ms 1.9608 ms 5.4335 ms 100.726 ms - - 105,698 B
EfCoreInsert 2 100 107.150 ms 2.1401 ms 5.9656 ms 106.530 ms 3000.0000 250.0000 14,931,716 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 2 100 110.293 ms 2.4828 ms 7.2029 ms 110.000 ms - - 643,762 B
NpgSqlInsert_SingularCommand_TypedValue 2 100 111.390 ms 2.2511 ms 6.5664 ms 111.212 ms - - 629,325 B
NpgSqlInsert_SingularCommand_Typed_NpgsqlDbType_NpgsqlValue 2 100 112.477 ms 2.8215 ms 8.0954 ms 112.921 ms - - 662,894 B
NpgSqlInsert_SingularCommand_Typed_NpgsqlDbType_TypedValue 2 100 114.620 ms 3.7625 ms 11.0347 ms 112.522 ms - - 629,496 B
EfCoreInsert_NoAutoDetectChanges_NoQueryTracking 10 100 123.373 ms 2.1820 ms 5.2699 ms 122.051 ms 2250.0000 500.0000 13,413,148 B
EfCoreInsert 10 100 245.048 ms 4.8435 ms 9.3318 ms 242.024 ms 14500.0000 1000.0000 72,427,752 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue_Prepared 10 100 510.520 ms 9.5923 ms 24.7608 ms 513.620 ms - - 684,200 B
NpgSqlInsert_SingularCommand_TypedValue_Prepared 10 100 516.918 ms 10.2037 ms 29.1116 ms 515.552 ms - - 516,104 B
NpgSqlInsert_SingularCommand_TypedValue 10 100 570.162 ms 14.6747 ms 42.5739 ms 560.647 ms - - 3,145,368 B
NpgSqlInsert_SingularCommand_Typed_NpgsqlDbType_NpgsqlValue 10 100 571.702 ms 15.2041 ms 44.1099 ms 576.605 ms - - 3,313,368 B
NpgSqlInsert_SingularCommand_Boxed_NpgsqlDbType_NpgsqlValue 10 100 580.033 ms 16.6669 ms 48.8812 ms 574.946 ms - - 3,217,368 B
NpgSqlInsert_SingularCommand_Typed_NpgsqlDbType_TypedValue 10 100 584.305 ms 14.5471 ms 41.9716 ms 584.282 ms - - 3,145,368 B
COPY methods
Method ObjectsPerSave SaveIterations Mean [ms] Error [ms] StdDev [ms] Gen 0 Allocated [B]
NpgsqlCopyWithTypesAsString 2 100 75.23 ms 4.911 ms 14.32 ms - 190,234 B
NpgsqlCopy 2 100 76.10 ms 5.404 ms 15.85 ms - 190,281 B
NpgsqlCopy 100 100 107.51 ms 6.757 ms 19.71 ms 333.3333 1,759,355 B
NpgsqlCopyWithTypesAsString 100 100 109.43 ms 9.134 ms 26.93 ms 250.0000 1,759,418 B

Non-significant difference between using NpgsqlDbType and string to provide Copy() with database type information.

NpgsqlConnection time
Method Iterations Mean [ms] Error [ms] StdDev [ms] Allocated [B]
NpgsqlConnectionPerIterationTime 1000 56.21 ms 1.089 ms 2.098 ms 1,012,584 B
NpgsqlConnectionSingleTime 1000 73.14 ms 1.397 ms 1.663 ms 1,347,200 B

1 iteration vs 1000 iterations increased the time by about 0.01693ms.

Partition Tables

_See Results/ folder for details

Method Iterations RangeSize Mean [ms] Error [ms] StdDev [ms] Allocated [B]
'B-Tree index on normal table' 200 1000 46.90 ms 0.853 ms 1.891 ms 258,232 B
'B-Tree index on Partition Table' 200 1000 50.96 ms 0.986 ms 1.316 ms 270,842 B
'B-Tree index on normal table' 200 10000 194.49 ms 3.386 ms 3.002 ms 258,968 B
'B-Tree index on Partition Table' 200 10000 211.56 ms 1.157 ms 0.903 ms 271,595 B
'BRIN index on Partition Table' 200 1000 417.49 ms 4.821 ms 4.509 ms 271,768 B
'BRIN index on Partition Table' 200 10000 431.61 ms 3.445 ms 3.054 ms 271,768 B
'B-Tree index on normal table' 200 100000 1,542.42 ms 6.848 ms 6.405 ms 262,168 B
'B-Tree index on Partition Table' 200 100000 1,703.65 ms 1.790 ms 1.495 ms 271,768 B
'BRIN index on Partition Table' 200 100000 4,082.63 ms 64.758 ms 60.575 ms 272,760 B
Server shared_memory set to 128MB

TODO