Chymyst / chymyst-core

Declarative concurrency in Scala - The implementation of the chemical machine
Apache License 2.0
155 stars 11 forks source link

Second attempt to implement granular reactions #124

Closed winitzki closed 7 years ago

winitzki commented 7 years ago

Implement finer granularity in the reaction scheduler, as an automatic optimization.

Reactions involving independent molecules should be scheduled concurrently whenever enough molecules are present. The reaction scheduler should not lock the entire set of all molecules while looking for molecule values. Instead, it should implement granular subset locking, so that several instances of reaction scheduler could look for their molecule values concurrently, when this does not modify the result of the computation.

codecov[bot] commented 7 years ago

Codecov Report

Merging #124 into master will increase coverage by 0.07%. The diff coverage is 100%.

Impacted file tree graph

@@           Coverage Diff            @@
##           master   #124      +/-   ##
========================================
+ Coverage   99.92%   100%   +0.07%     
========================================
  Files          14     14              
  Lines        1259   1249      -10     
  Branches      158    152       -6     
========================================
- Hits         1258   1249       -9     
+ Misses          1      0       -1
Impacted Files Coverage Δ
core/src/main/scala/io/chymyst/jc/Reaction.scala 100% <100%> (ø) :arrow_up:
core/src/main/scala/io/chymyst/jc/SmartPool.scala 100% <100%> (ø) :arrow_up:
...re/src/main/scala/io/chymyst/jc/ReactionSite.scala 100% <100%> (+0.32%) :arrow_up:
core/src/main/scala/io/chymyst/jc/Core.scala 100% <100%> (ø) :arrow_up:
core/src/main/scala/io/chymyst/jc/Molecules.scala 100% <100%> (ø) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 9944002...036020f. Read the comment docs.