Циклы выполнения правил

Здравствуйте.
В PLC существует такое понятие как ТИК. Это один цикл выполнения программы.

Для упрощения некоторых правил, хотел сымитировать на WB7 нечто похожее.

Для оценки количества циклов выполнения правил написал правило.

Сразу скажу что результат меня удивил.
Я рассчитывал увидеть цифры из порядка десятков тысяч циклов в секунду.
А увидел примерно 4-6 циклов в секунду, при этом эта величина меняется. Т.е. за 5 секунд это 20-30 циклов.
При этом при задании выполнения правил по таймеру он честно выполняет правило каждые 100 мс. Т.е. по данному коду честно выдает свои 50 циклов.
Повторив тоже на WB6 я получил 150-180 циклов за 5 сек т.е. 30-35 циклов в секунду.
Получается что они работают не по таймеру.

Если кто может прояснить как оценить количество циклов в секунду при выполнении правил и вообще применимость такого подхода.

// определение производительности системы 


var effi1 = 0;
var effi2 = 0;


defineVirtualDevice('effi', {
  title: 'Efficiency' ,
  cells: {
  
   

    // Значение производительности в циклах
     effi_cic: {
      title: "Efficiency cicle/sec",
      type: "value",
      value: 0,
    readonly: false
      },

  // Значение производительности в циклах2
     effi_cic2: {
      title: "Efficiency cicle/sec2",
      type: "value",
      value: 0,
    readonly: false
      }
    
        
  }
});



effi_rule1=defineRule("effi_rule2",{
  when: function() {
    effi2=effi2+1; 
    return true;},
 
  then: function() {
    
       
  }

});



teffi = setInterval(
function(){
effi1=effi1+1;
}
, 100);


teffi = setInterval(
function(){
dev["effi/effi_cic"]=effi1;
effi1=0;
 dev["effi/effi_cic2"]=effi2;  
effi2=0;    
}
, 5000);

Добрый день.
Не очень коррекно, так как используется when
Если организовать просто пустой цикл, for, например - результат будет на порядок отличаться.
И wb-rules - оринетирован на событийную модель выполнения, просто так гонять циклы с поллингом смысла не имеет.