Chicken wrote:Does it result in similar lower DPS on the rotation without Inq, and/or the rotations with HW and Cons included as filler?
Yup:
- Code: Select all
DPS TPS SHPS E I
Q# Priority V=100% V=30% V=100% V=30% V=100% V=30% % %
1 SotR>CS>AS>J 15630 10149 46891 30447 0 0 7.4 0.0
4 SotR>AS>CS>J 15446 10028 46339 30084 0 0 8.6 0.0
11 SotR>CS>AS>J>Cons>HW 16084 10508 48253 31525 0 0 1.6 0.0
12 SotR>AS+>CS>AS>J>Cons>HW 16069 10499 48208 31499 0 0 1.8 0.0
20 SDSotR>ISotR>Inq>CS>AS>J 15771 10238 47314 30713 0 0 7.5 40.2
22 SDSotR>ISotR>Inq>AS[buffGC<2]>CS>AS>J 15632 10148 46897 30443 0 0 8.3 39.5
23 SDSotR>ISotR>Inq>AS[buffGC<=1.5]>CS>AS>J 15632 10148 46897 30443 0 0 8.3 39.5
24 SDSotR>ISotR>Inq>AS[buffGC<1.5]>CS>AS>J 15623 10142 46868 30425 0 0 8.3 39.4
29 SDSotR>ISotR>Inq>CS>AS>J>Cons>HW 16269 10632 48807 31897 0 0 1.7 40.2
30 SDSotR>ISotR>Inq>AS[buffGC<2]>CS>AS>J>Cons>HW 16143 10553 48430 31661 0 0 2.4 39.5
31 SDSotR>ISotR>Inq>AS[buffGC<=1.5]>CS>AS>J>Cons>HW 16143 10553 48430 31661 0 0 2.4 39.5
32 SDSotR>ISotR>Inq>AS[buffGC<1.5]>CS>AS>J>Cons>HW 16132 10546 48398 31640 0 0 2.4 39.4
These are for 2% hit and 10 expertise. It seems that the results hold with the 8% hit / 26 expertise case though:
- Code: Select all
DPS TPS SHPS E I
Q# Priority V=100% V=30% V=100% V=30% V=100% V=30% % %
1 SotR>CS>AS>J 18270 11878 54809 35635 0 0 6.0 0.0
4 SotR>AS>CS>J 18018 11713 54055 35138 0 0 7.4 0.0
11 SotR>CS>AS>J>Cons>HW 18722 12233 56168 36698 0 0 0.8 0.0
12 SotR>AS+>CS>AS>J>Cons>HW 18667 12197 56001 36592 0 0 1.1 0.0
20 SDSotR>ISotR>Inq>CS>AS>J 18448 11990 55344 35971 0 0 6.0 43.3
22 SDSotR>ISotR>Inq>AS[buffGC<2]>CS>AS>J 18303 11897 54909 35691 0 0 6.8 41.9
23 SDSotR>ISotR>Inq>AS[buffGC<=1.5]>CS>AS>J 18303 11897 54909 35691 0 0 6.8 41.9
24 SDSotR>ISotR>Inq>AS[buffGC<1.5]>CS>AS>J 18300 11895 54901 35686 0 0 6.8 41.9
29 SDSotR>ISotR>Inq>CS>AS>J>Cons>HW 18942 12377 56827 37133 0 0 0.8 43.3
30 SDSotR>ISotR>Inq>AS[buffGC<2]>CS>AS>J>Cons>HW 18813 12297 56440 36893 0 0 1.4 41.9
31 SDSotR>ISotR>Inq>AS[buffGC<=1.5]>CS>AS>J>Cons>HW 18813 12297 56440 36893 0 0 1.4 41.9
32 SDSotR>ISotR>Inq>AS[buffGC<1.5]>CS>AS>J>Cons>HW 18810 12295 56431 36887 0 0 1.4 41.9
As to it's counter-intuitiveness, I agree. I could rationalize it at low-hit/exp based on empty GCDs and filler push-back (e.g. J-CS*-SotR(miss)-SotR-AS-CS-J-CS-empty-CS-SotR vs. J-CS*-SotR(miss)-SotR-CS-AS-CS-J-CS-SotR, assuming one of those CS's misses and no additional GrCr procs happen). However, I would have expected the result to reverse itself at high-hit/exp if that were the case, which doesn't happen. In addition, Cons/HW should help mitigate those empties, which doesn't seem to be the case based on 27/28.
I've added [buffGC<=1.5] and [buffGC<1.5] to the tables above to see if there are edge effects occurring. The situation we're interested in is CS*(6s left)-SotR(4.5s left)-SotR(3s left)-?(1.5s left). I believe the sim is still working in timesteps of 1.5s, so that ? slot should always be 1.5s left on GrCr.
Thus, the difference between [<2] and [<=1.5] shouldn't matter, but [<1.5] is functionally different since it excludes the exact case we're trying to improve. This seems borne out in the results: [<2] and [<=1.5] are identical, and [<1.5] always performs worse. That at least suggests that our intuition about the specific case is correct, and AS>CS in that particular situation is probably an improvement.
Which still leaves the question of why this queue performs over 100 DPS worse than its simple CS>AS>J counterpart. The key is probably that it's causing another, more dominant effect in a different scenario that's interfering. I'm not sure what that would be though, since the condition seems pretty specific. With the old priority code, I'd just generate a string of events and browse through them to see what sorts of local sequences occur, but I don't know how to do that with the FSM code yet. I know that Iminmmnni and I discussed that functionality, but I don't think it's implemented yet - at the very least, I don't remember seeing it in the code base, but I didn't have time to look through all of the test/troubleshooting sequences, so maybe it's buried in there.
There's also the possibility that the conditional isn't working properly (example: if it's actually evaluating buffGC>2, that would obviously change the results in a way that would cause a decrease). I can take a look at the code later today and see if that's the case.