Skip to content

Software Development Kit - Open source conceptual resources to develop distributed, scalable, multi tenant web application in N-Tier architecture.

License

Notifications You must be signed in to change notification settings

undersoft-org/SoftwareDevelopmentKit

Repository files navigation

Software Development Kit

Open source conceptual resources to develop distributed, scalable, multi tenant web application in N-Tier architecture. Front tier with single code base hybrid web assembly, android, windows clients. Application tier with application server. Service tier with administration server and operational data services. Data tier with database stores (available: npgsql, mysql, mariadb, sqlserver, oracle, mongo, sqlite, cosmodb, azuresql, inmemorydb) and blob/file storages.

Benchamrks performed and specialized for Undersoft SDK usage and purpose and for them results show that Undersoft SDK is ~ 5 times faster with ~ 5 times less RAM usage then .NET Standard Collections and Parallel Math operations on IEnumerables

BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19045 Intel Core i7-4700MQ CPU 2.40GHz (Haswell), 1 CPU, 8 logical and 4 physical cores .NET SDK=8.0.200 [Host] : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT [AttachedDebugger] DefaultJob : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT

Method (10 mln objects)MeanErrorStdDevRankGen 0Allocated
Instant_Series_Undersoft_Math_AsParallel309.5 ms5.76 ms5.66 ms176000229 MB
Instant_Series_DotNet_Math_AsParellel2,028.9 ms39.79 ms60.76 ms25350001,602 MB
Instant_Proxies_Undersoft_Math_AsParallel327.7 ms5.67 ms6.53 ms176500229 MB
Instant_Proxies_DotNet_Math_AsParellel2,490.4 ms21.73 ms18.14 ms25350001,602 MB

Undersoft.SDK data structures:

  • Chain (ordered, not-thread-safe, not-indexed, queued, keyed, repeatable)
  • Catalog (ordered, thread-safe, not-indexed, queued, keyed, repeatable)
  • Listing (ordered, not-thread-safe, indexed, queued, keyed, repeatable)
  • Registry (ordered, thread-safe, indexed, queued, keyed, repeatable)

System.Collections.Generic data structures:

  • ConcurrentDictionary (not-ordered, thread-safe, not-indexed, not-queued, keyed, not-repeatable)
  • OrderedDictionary (ordered, not-thread-safe, indexed, not-queued, keyed, not-repeatable)
  • Dictionary (not-ordered, not-thread-safe, not-indexed, not-queued, keyed, not-repeatable)
Method (10 concurrent tasks each 100K objects) MeanErrorStdDevMedianRankGen 0Gen 1Allocated
Catalog_Add1,416.55 ms236.30 ms61.367 ms1,424.28 ms62000010000199 MB
Catalog_AddOrUpdate1,224.97 ms178.81 ms46.437 ms1,216.00 ms5100005000118 MB
Catalog_ContainsKey60.65 ms19.14 ms4.971 ms58.67 ms1--31 MB
Catalog_GetByKey195.04 ms39.81 ms10.339 ms191.40 ms3--31 MB
Catalog_GetOrAdd1,045.72 ms190.98 ms49.598 ms1,025.00 ms4100005000118 MB
Catalog_Iteration191.60 ms398.34 ms103.448 ms142.97 ms3--31 MB
Catalog_Remove122.05 ms22.19 ms5.763 ms119.63 ms2--31 MB
Catalog_SetByKey215.20 ms36.67 ms9.523 ms210.73 ms3--31 MB
Catalog_TryGetByKey197.87 ms50.83 ms13.200 ms190.54 ms3--31 MB
Registry_Add1,532.15 ms188.53 ms48.961 ms1,523.63 ms72100010000217 MB
Registry_AddOrUpdate1,085.43 ms148.56 ms38.581 ms1,078.40 ms4100005000128 MB
Registry_ContainsKey60.74 ms21.25 ms5.519 ms57.64 ms1--31 MB
Registry_GetByKey210.57 ms72.67 ms18.873 ms208.03 ms3--31 MB
Registry_GetOrAdd997.04 ms105.59 ms27.421 ms991.91 ms4100005000128 MB
Registry_Iteration162.31 ms106.05 ms27.541 ms146.92 ms3--31 MB
Registry_Remove123.73 ms25.34 ms6.580 ms124.04 ms2--31 MB
Registry_SetByKey208.29 ms60.35 ms15.672 ms203.98 ms3--31 MB
Registry_TryGetByKey190.18 ms29.59 ms7.684 ms188.66 ms3--31 MB
ConcurrentDictionary_Add1,979.11 ms346.71 ms90.040 ms1,979.77 ms88400031000577 MB
ConcurrentDictionary_AddOrUpdate1,228.47 ms202.59 ms52.611 ms1,209.23 ms510100028000648 MB
ConcurrentDictionary_ContainsKey203.32 ms48.06 ms12.482 ms201.00 ms3107000-351 MB
ConcurrentDictionary_GetByKey214.59 ms99.61 ms25.868 ms220.30 ms3107000-351 MB
ConcurrentDictionary_GetOrAdd1,082.26 ms174.55 ms45.330 ms1,075.29 ms46900022000465 MB
ConcurrentDictionary_Iteration242.47 ms396.37 ms102.937 ms181.28 ms3--31 MB
ConcurrentDictionary_Remove160.96 ms73.52 ms19.093 ms152.38 ms3520001000191 MB
ConcurrentDictionary_SetByKey236.14 ms98.28 ms25.524 ms222.56 ms3107000-351 MB
ConcurrentDictionary_TryGetByKey200.36 ms81.21 ms21.089 ms200.08 ms3107000-351 MB
Method (1 mln objects)MeanErrorStdDevRankGen 0Gen 1Allocated
Dictionary_Add_Test1,749.7 ms400.47 ms104.00 ms5128000-533 MB
OrderedDictionary_Add_Test2,070.1 ms269.37 ms69.95 ms66100016000529 MB
ConcurrentDictionary_Add_Test4,343.0 ms1,205.17 ms312.98 ms78400026000546 MB
Chain_Add_Test719.0 ms185.91 ms48.28 ms12000010000154 MB
Catalog_Add_Test923.9 ms95.30 ms24.75 ms32000010000168 MB
Listing_Add_Test818.5 ms130.86 ms33.99 ms22000010000186 MB
Registry_Add_Test999.1 ms139.11 ms36.13 ms42000010000186 MB
Method (1 mln objects)MeanErrorStdDevRankGen 0Allocated
Dictionary_GetByKey_Test924.9 ms73.96 ms19.21 ms2168000504 MB
OrderedDictionary_GetByKey_Test675.6 ms272.82 ms70.85 ms196000290 MB
ConcurrentDictionary_GetByKey_Test1,253.3 ms392.78 ms102.00 ms3168000504 MB
Chain_GetByKey_Test212.2 ms68.58 ms17.81 ms1--
Catalog_GetByKey_Test273.8 ms9.34 ms2.43 ms2-12,448 B
Listing_GetByKey_Test206.8 ms5.54 ms1.44 ms1--
Registry_GetByKey_Test284.9 ms57.66 ms14.97 ms2-12,160 B
Method (1 mln objects)MeanErrorStdDevRankGen 0Gen 1Allocated
OrderedDictionary_SetByKey_Test4,139.2 ms3,754.28 ms974.97 ms610700026000675,424,640 B
Dictionary_SetByKey_Test1,024.7 ms283.61 ms73.65 ms4168000-528,012,400 B
ConcurrentDictionary_SetByKey_Test1,276.1 ms107.57 ms27.93 ms5168000-528,012,160 B
Chain_SetByKey_Test212.3 ms14.36 ms3.73 ms1---
Catalog_SetByKey_Test286.2 ms36.30 ms9.43 ms3--12,160 B
Listing_SetByKey_Test209.6 ms10.50 ms2.73 ms1--12,160 B
Registry_SetByKey_Test271.6 ms18.34 ms4.76 ms2---
Method (1 mln objects)MeanErrorStdDevRankGen 0Allocated
Dictionary_ContainsKey_Test957.6 ms104.59 ms27.16 ms3168000528,012,160 B
OrderedDictionary_ContainsKey_Test678.5 ms302.66 ms78.60 ms296000304,006,656 B
ConcurrentDictionary_ContainsKey_Test1,147.2 ms125.92 ms32.70 ms4168000528,012,160 B
Chain_ContainsKey_Test207.2 ms28.16 ms7.31 ms1--
Catalog_ContainsKey_Test203.0 ms35.18 ms9.14 ms1--
Listing_ContainsKey_Test199.2 ms53.65 ms13.93 ms1--
Registry_ContainsKey_Test214.3 ms17.66 ms4.59 ms1--
Method (1 mln objects)MeanErrorStdDevRankGen 0Gen 1Allocated
Dictionary_Remove_Test1,006.4 ms25.72 ms6.68 ms31580001000478 MB
ConcurrentDictionary_Remove_Test1,497.5 ms817.11 ms212.20 ms41580001000478 MB
Chain_Remove_Test342.7 ms141.28 ms36.69 ms1--18 MB
Catalog_Remove_Test597.7 ms457.69 ms118.86 ms2--26 MB
Listing_Remove_Test353.0 ms385.37 ms100.08 ms1--37 MB
Registry_Remove_Test526.5 ms82.80 ms21.50 ms2--37 MB
Method (10K objects) MeanErrorStdDevMedianRankAllocated
Chain_ContainsValue_Test631.6 μs1,889.6 μs490.7 μs403.1 μs170,160 B
Catalog_ContainsValue_Test837.1 μs3,238.9 μs841.1 μs494.4 μs169,872 B
Listing_ContainsValue_Test832.6 μs2,829.0 μs734.7 μs548.9 μs170,400 B
Registry_ContainsValue_Test1,622.2 μs4,626.7 μs1,201.5 μs971.4 μs270,112 B
List_ContainsValue_Test23,234.8 μs10,714.2 μs2,782.4 μs23,374.9 μs3-
Dictionary_ContainsValue_Test24,653.2 μs37,045.9 μs9,620.7 μs19,812.0 μs3-
Method (1 mln objects)MeanErrorStdDevRankGen 0Allocated
Chain_Iteration_Test94.42 ms31.58 ms8.201 ms2--
Catalog_Iteration_Test90.14 ms19.59 ms5.087 ms2-12,144 B
Listing_Iteration_Test94.20 ms28.26 ms7.340 ms2--
Registry_Iteration_Test95.31 ms43.38 ms11.266 ms2--
Dictionary_Iteration_Test60.94 ms36.02 ms9.354 ms1--
OrderedDictionary_Iteration_Test217.26 ms72.03 ms18.707 ms340000128,006,208 B
ConcurrentDictionary_Iteration_Test449.44 ms149.87 ms38.921 ms4--

About

Software Development Kit - Open source conceptual resources to develop distributed, scalable, multi tenant web application in N-Tier architecture.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •