Uploaded image for project: 'JBRULES'
  1. JBRULES
  2. JBRULES-598

Core is not indexing beta memory for Strings and Dates

    Details

      Description

      [19:36] <edar> I think that you need to see the rule - just a sec....
      [19:37] <edar> URL: http://rafb.net/p/bnWvC837.html
      [19:37] <tirelli> ok, what is the question?
      [19:38] <edar> The example program seems to be iterating through all instances of MappedPID when, in this case, there is only a single instance that will satisfy a given BloombergEquityPrice
      [19:38] <edar> I was expecting MappedPID to be indexed on cusip
      [19:39] <edar> What I mean is that given a BloombergEquityPrice with ID_CUSIP=12345, there's only a single MappedPID with that cusip
      [19:40] <tirelli> yes, this should be using indexing
      [19:40] <edar> Good
      [19:40] <edar> Whew.....
      [19:40] <tirelli> what version of jbrules are you using? how do you know it is iterating over them all?
      [19:41] <edar> In my test, I can vary the number of instances of MappedPID and see that the test run time varys proportionally with the number of MappedPID instances.
      [19:41] <edar> I'm using the latest download from JBoss
      [19:41] <tirelli> stable, you mean? (3.0.5)
      [19:42] <edar> yes, I just checked, 3.0.5
      [19:42] <edar> I can easily package up my test case and send it to you if you want.
      [19:42] <tirelli> ok, depends where you are taking your times
      [19:42] <tirelli> please
      [19:42] <tirelli> it will be faster
      [19:42] <tirelli> also, how many instances of BloombergEquityPrice are you asserting?
      [19:43] <edar> I'm just looking at the total elapsed time for the entire process and then calculating how many 'mappings' per second.
      [19:43] <edar> I'm asserting 10K MappedPID and 10K BloombergEquityPrice. It only takes sub-seconds to assert all of the MappedPID
      [19:43] <tirelli> it's important to note that the assert time will increase with additional assertions...
      [19:44] <edar> The assert time is minimal. If I just take out the mapping part of the rule, the asserts are VERY fast.
      [19:44] <tirelli> so, if you exclude the assert time, the variation in matches/second should not be that much...
      [19:44] <tirelli> edar, best way to check is disable indexing and run again
      [19:45] <tirelli> you will see a big difference if indexing is turned off
      [19:45] <edar> It's huge. For example, for 1K prices/mappings, I see about 4500K/second mappings. For 10K of each, I see 300/second
      [19:46] <edar> I have tried all of the variants of indexing with about the same results
      [19:46] <edar> Is there any kind of logging that will show me exactly what is going on with indexing and if it is being used?
      [19:47] <tirelli> edar, run a test with -Dorg.drools.reteoo.beta.index-right=true and another with -Dorg.drools.reteoo.beta.index-right=false
      [19:47] <tirelli> what is the difference?
      [19:47] <edar> I did that and I saw, basically, no difference.
      [19:47] <edar> I have the exact numbers here. Just a sec.
      [19:47] <tirelli> hmm... strange... in this case we may have a problem
      [19:47] <tirelli> can you send me your test?

      JBoss Rules 3.0.5 is not indexing beta memory for String and Dates. Add support for that.

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                tirelli Edson Tirelli
                Reporter:
                tirelli Edson Tirelli
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: