Parallel Complex Event Processing can be used to process high rate streams to get better latency. In order to handle out of order events, buffering and speculative processing techniques are discussed and analyzed. Another technique that merges both of them and adapts to the situation at runtime sounds promising. However, there are some inherent limitations of the technique due to which it doesn’t perform very well for parallel CEP systems. Our implementation is mainly based on this technique but we have done some optimizations to enhance the performance for parallel CEP systems. There are two major optimizations done in this technique. First of all, the internal recovery process is introduced which allows us to reduce communication overhead because we don’t forward the events to the operator instances again after recovery. Instead, we just send some messages containing commands to amend the windows, as required. This can help a lot, especially in the cases when the events contain some heavy data like high quality pictures or video clip etc. Secondly, we have divided the tasks to all the operator components, so that they can take checkpoints as well as recover back when required, irrespective of the other operator components. This allows them to run at their own pace instead of the consistency manager asking all of them to take checkpoint and send their respective states to the consistency manager. In this way, the waiting time of the consistency manager is avoided. Moreover, we have also introduced some minor optimizations like we can access the queues directly and add the out of order events to them, which avoids the recovery of the system, if possible. We have also introduced a high priority queue in the operator instance to allow the out of order events to bypass the normal queue and avoid recovery of the operator instance, if possible. Evaluations are done using synthetic data and the results show that our optimizations have increased the throughput as well as improved the latency in most of the cases.