Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf ·...
Transcript of Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf ·...
![Page 1: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/1.jpg)
Revisiting the Issue of Performance Enhancementof Discrete Event Simulation Software 1
Alex Bahouth, Steven Crites, Norman Matloff and ToddWilliamson
Department of Computer ScienceUniversity of California at Davis
Davis, CA 95616 [email protected]
1We wish to thank Victor Castillo and the Lawrence Livermore NationalLaboratory for supporting this research.
![Page 2: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/2.jpg)
This presentation is produced using C. Campani’s Beamer LATEXclass.See http://heather.cs.ucdavis.edu/~matloff/beamer.htmlfor a quick tutorial.Disclaimer: Our slides here won’t show off what Beamer can do.Sorry. :-)
![Page 3: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/3.jpg)
Issues Addressed in This Paper
Interpreted languages (Java, Python) now popular for DES
Interpreted languages are slow.
DES literature mainly algorithm-centric.
What can be done specifically for interpreted languages?
What can be done for systems considerations, e.g. VM?
![Page 4: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/4.jpg)
Issues Addressed in This Paper
Interpreted languages (Java, Python) now popular for DES
Interpreted languages are slow.
DES literature mainly algorithm-centric.
What can be done specifically for interpreted languages?
What can be done for systems considerations, e.g. VM?
![Page 5: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/5.jpg)
Issues Addressed in This Paper
Interpreted languages (Java, Python) now popular for DES
Interpreted languages are slow.
DES literature mainly algorithm-centric.
What can be done specifically for interpreted languages?
What can be done for systems considerations, e.g. VM?
![Page 6: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/6.jpg)
Issues Addressed in This Paper
Interpreted languages (Java, Python) now popular for DES
Interpreted languages are slow.
DES literature mainly algorithm-centric.
What can be done specifically for interpreted languages?
What can be done for systems considerations, e.g. VM?
![Page 7: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/7.jpg)
Issues Addressed in This Paper
Interpreted languages (Java, Python) now popular for DES
Interpreted languages are slow.
DES literature mainly algorithm-centric.
What can be done specifically for interpreted languages?
What can be done for systems considerations, e.g. VM?
![Page 8: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/8.jpg)
Case Study: SimPy
Our investigation took the form of a case study: enhancing thepeformance of the SimPy DES language.
About SimPy:
Written by Klaus Muller and Tony Vignaux.
I have developed an online DES course based on SimPy,available atheather.cs.ucdavis.edu/~matloff/simcourse.html.
SimPy uses Python:
Lots of high-level Python constructs make programming mucheasier.Python generator construct used by SimPy to set upcoroutines, i.e. non-preemptive threads.
![Page 9: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/9.jpg)
Case Study: SimPy
Our investigation took the form of a case study: enhancing thepeformance of the SimPy DES language.About SimPy:
Written by Klaus Muller and Tony Vignaux.
I have developed an online DES course based on SimPy,available atheather.cs.ucdavis.edu/~matloff/simcourse.html.
SimPy uses Python:
Lots of high-level Python constructs make programming mucheasier.Python generator construct used by SimPy to set upcoroutines, i.e. non-preemptive threads.
![Page 10: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/10.jpg)
Case Study: SimPy
Our investigation took the form of a case study: enhancing thepeformance of the SimPy DES language.About SimPy:
Written by Klaus Muller and Tony Vignaux.
I have developed an online DES course based on SimPy,available atheather.cs.ucdavis.edu/~matloff/simcourse.html.
SimPy uses Python:
Lots of high-level Python constructs make programming mucheasier.Python generator construct used by SimPy to set upcoroutines, i.e. non-preemptive threads.
![Page 11: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/11.jpg)
Case Study: SimPy
Our investigation took the form of a case study: enhancing thepeformance of the SimPy DES language.About SimPy:
Written by Klaus Muller and Tony Vignaux.
I have developed an online DES course based on SimPy,available atheather.cs.ucdavis.edu/~matloff/simcourse.html.
SimPy uses Python:
Lots of high-level Python constructs make programming mucheasier.Python generator construct used by SimPy to set upcoroutines, i.e. non-preemptive threads.
![Page 12: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/12.jpg)
Case Study: SimPy
Our investigation took the form of a case study: enhancing thepeformance of the SimPy DES language.About SimPy:
Written by Klaus Muller and Tony Vignaux.
I have developed an online DES course based on SimPy,available atheather.cs.ucdavis.edu/~matloff/simcourse.html.
SimPy uses Python:
Lots of high-level Python constructs make programming mucheasier.Python generator construct used by SimPy to set upcoroutines, i.e. non-preemptive threads.
![Page 13: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/13.jpg)
Case Study: SimPy
Our investigation took the form of a case study: enhancing thepeformance of the SimPy DES language.About SimPy:
Written by Klaus Muller and Tony Vignaux.
I have developed an online DES course based on SimPy,available atheather.cs.ucdavis.edu/~matloff/simcourse.html.
SimPy uses Python:
Lots of high-level Python constructs make programming mucheasier.
Python generator construct used by SimPy to set upcoroutines, i.e. non-preemptive threads.
![Page 14: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/14.jpg)
Case Study: SimPy
Our investigation took the form of a case study: enhancing thepeformance of the SimPy DES language.About SimPy:
Written by Klaus Muller and Tony Vignaux.
I have developed an online DES course based on SimPy,available atheather.cs.ucdavis.edu/~matloff/simcourse.html.
SimPy uses Python:
Lots of high-level Python constructs make programming mucheasier.Python generator construct used by SimPy to set upcoroutines, i.e. non-preemptive threads.
![Page 15: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/15.jpg)
Sample SimPy Code
Machine repair, several machines.
Have class MachineClass, with member variables such asUpTime, etc.
Each class has a member function Run() which simulates onemachine.
![Page 16: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/16.jpg)
Sample SimPy Code
Machine repair, several machines.
Have class MachineClass, with member variables such asUpTime, etc.
Each class has a member function Run() which simulates onemachine.
![Page 17: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/17.jpg)
Sample SimPy Code
Machine repair, several machines.
Have class MachineClass, with member variables such asUpTime, etc.
Each class has a member function Run() which simulates onemachine.
![Page 18: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/18.jpg)
Sample SimPy Code
Machine repair, several machines.
Have class MachineClass, with member variables such asUpTime, etc.
Each class has a member function Run() which simulates onemachine.
![Page 19: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/19.jpg)
Sample Run() Function
def Run(self):while 1:self.StartUpTime = SimPy.Simulation.now()# hold for up timeUpTime = G.Rnd.expovariate(MachineClass.UpRate)yield SimPy.Simulation.hold,self,UpTime# update up time totalMachineClass.TotalUpTime +=
SimPy.Simulation.now() - self.StartUpTimeRepairTime = G.Rnd.expovariate(MachineClass.RepairRate)# hold for repair timeyield SimPy.Simulation.hold,self,RepairTime
The yield actually does yield the processor. But yield is a coroutinerelease—next time this function runs, it resumes after the yield.
![Page 20: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/20.jpg)
Sample Run() Function
def Run(self):while 1:self.StartUpTime = SimPy.Simulation.now()# hold for up timeUpTime = G.Rnd.expovariate(MachineClass.UpRate)yield SimPy.Simulation.hold,self,UpTime# update up time totalMachineClass.TotalUpTime +=
SimPy.Simulation.now() - self.StartUpTimeRepairTime = G.Rnd.expovariate(MachineClass.RepairRate)# hold for repair timeyield SimPy.Simulation.hold,self,RepairTime
The yield actually does yield the processor.
But yield is a coroutinerelease—next time this function runs, it resumes after the yield.
![Page 21: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/21.jpg)
Sample Run() Function
def Run(self):while 1:self.StartUpTime = SimPy.Simulation.now()# hold for up timeUpTime = G.Rnd.expovariate(MachineClass.UpRate)yield SimPy.Simulation.hold,self,UpTime# update up time totalMachineClass.TotalUpTime +=
SimPy.Simulation.now() - self.StartUpTimeRepairTime = G.Rnd.expovariate(MachineClass.RepairRate)# hold for repair timeyield SimPy.Simulation.hold,self,RepairTime
The yield actually does yield the processor. But yield is a coroutinerelease—next time this function runs, it resumes after the yield.
![Page 22: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/22.jpg)
SimPy Data Structures
Assume for simplicity no tied event times.
The Python list timestamps stores all event times, inascending order. e.g. to determine the earliest scheduledevent.A Python list is not an array! One may insert and deleteelements, with the corresponding overhead of shifting data.
The actual events are in a Python dictionary (associativearray) named events.Python dictionaries are implemented as hash tables,reasonably fast.
![Page 23: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/23.jpg)
SimPy Data Structures
Assume for simplicity no tied event times.
The Python list timestamps stores all event times, inascending order. e.g. to determine the earliest scheduledevent.
A Python list is not an array! One may insert and deleteelements, with the corresponding overhead of shifting data.
The actual events are in a Python dictionary (associativearray) named events.Python dictionaries are implemented as hash tables,reasonably fast.
![Page 24: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/24.jpg)
SimPy Data Structures
Assume for simplicity no tied event times.
The Python list timestamps stores all event times, inascending order. e.g. to determine the earliest scheduledevent.A Python list is not an array! One may insert and deleteelements, with the corresponding overhead of shifting data.
The actual events are in a Python dictionary (associativearray) named events.Python dictionaries are implemented as hash tables,reasonably fast.
![Page 25: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/25.jpg)
SimPy Data Structures
Assume for simplicity no tied event times.
The Python list timestamps stores all event times, inascending order. e.g. to determine the earliest scheduledevent.A Python list is not an array! One may insert and deleteelements, with the corresponding overhead of shifting data.
The actual events are in a Python dictionary (associativearray) named events.Python dictionaries are implemented as hash tables,reasonably fast.
![Page 26: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/26.jpg)
SimPy Queue Operations
When a new event is created at time t, then these operationsoccur:
(i) add t to list timestamps
(ii) add event to dictionary events
Step (i) makes use of Python’s bisect() function, which performsbisection sort.That would appear to be O(log n) time, for an n-item event list.Due to SimPy’s use of Python’s list structure, it is actually O(n),due to right-shifting of the data.
![Page 27: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/27.jpg)
SimPy Queue Operations
When a new event is created at time t, then these operationsoccur:
(i) add t to list timestamps
(ii) add event to dictionary events
Step (i) makes use of Python’s bisect() function, which performsbisection sort.That would appear to be O(log n) time, for an n-item event list.Due to SimPy’s use of Python’s list structure, it is actually O(n),due to right-shifting of the data.
![Page 28: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/28.jpg)
SimPy Queue Operations
When a new event is created at time t, then these operationsoccur:
(i) add t to list timestamps
(ii) add event to dictionary events
Step (i) makes use of Python’s bisect() function, which performsbisection sort.
That would appear to be O(log n) time, for an n-item event list.Due to SimPy’s use of Python’s list structure, it is actually O(n),due to right-shifting of the data.
![Page 29: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/29.jpg)
SimPy Queue Operations
When a new event is created at time t, then these operationsoccur:
(i) add t to list timestamps
(ii) add event to dictionary events
Step (i) makes use of Python’s bisect() function, which performsbisection sort.That would appear to be O(log n) time, for an n-item event list.Due to SimPy’s use of Python’s list structure, it is actually O(n),due to right-shifting of the data.
![Page 30: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/30.jpg)
SimPy Dequeue Operations
When the next event is executed, these operations occur:
(iii) remove head of list timestamps, time t
(iv) reactivate (invoke Python iterator for) Run() function forevent of time t in dictionary events
Again, what would appear to be an O(1) event is actually O(n).
![Page 31: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/31.jpg)
SimPy Dequeue Operations
When the next event is executed, these operations occur:
(iii) remove head of list timestamps, time t
(iv) reactivate (invoke Python iterator for) Run() function forevent of time t in dictionary events
Again, what would appear to be an O(1) event is actually O(n).
![Page 32: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/32.jpg)
SimPy Dequeue Operations
When the next event is executed, these operations occur:
(iii) remove head of list timestamps, time t
(iv) reactivate (invoke Python iterator for) Run() function forevent of time t in dictionary events
Again, what would appear to be an O(1) event is actually O(n).
![Page 33: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/33.jpg)
Summary of Sources of SimPy Slowness
Dictionary (smaller problem).
O(n) insert operation instead of O(log n) (big problem).
O(n) dequeue operation instead of O(1) (big problem).
Possible VM issues.
![Page 34: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/34.jpg)
Summary of Sources of SimPy Slowness
Dictionary (smaller problem).
O(n) insert operation instead of O(log n) (big problem).
O(n) dequeue operation instead of O(1) (big problem).
Possible VM issues.
![Page 35: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/35.jpg)
Summary of Sources of SimPy Slowness
Dictionary (smaller problem).
O(n) insert operation instead of O(log n) (big problem).
O(n) dequeue operation instead of O(1) (big problem).
Possible VM issues.
![Page 36: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/36.jpg)
Summary of Sources of SimPy Slowness
Dictionary (smaller problem).
O(n) insert operation instead of O(log n) (big problem).
O(n) dequeue operation instead of O(1) (big problem).
Possible VM issues.
![Page 37: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/37.jpg)
Summary of Sources of SimPy Slowness
Dictionary (smaller problem).
O(n) insert operation instead of O(log n) (big problem).
O(n) dequeue operation instead of O(1) (big problem).
Possible VM issues.
![Page 38: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/38.jpg)
Our Solutions
Remove dictionary entirely.
Rewrite core event-list operations in C for speed.
SWIG forms the “glue.”
Rethink event-list algorithms.
![Page 39: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/39.jpg)
Our Solutions
Remove dictionary entirely.
Rewrite core event-list operations in C for speed.
SWIG forms the “glue.”
Rethink event-list algorithms.
![Page 40: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/40.jpg)
Our Solutions
Remove dictionary entirely.
Rewrite core event-list operations in C for speed.
SWIG forms the “glue.”
Rethink event-list algorithms.
![Page 41: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/41.jpg)
Our Solutions
Remove dictionary entirely.
Rewrite core event-list operations in C for speed.
SWIG forms the “glue.”
Rethink event-list algorithms.
![Page 42: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/42.jpg)
Our Solutions
Remove dictionary entirely.
Rewrite core event-list operations in C for speed.
SWIG forms the “glue.”
Rethink event-list algorithms.
![Page 43: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/43.jpg)
Removal of Events Dictionary
Incorporate into the timestamps list, so list elements are nowof the form (time, event) instead of (time).
The bisect() operation still works!
Needed to overload Python’s < operator.
![Page 44: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/44.jpg)
Removal of Events Dictionary
Incorporate into the timestamps list, so list elements are nowof the form (time, event) instead of (time).
The bisect() operation still works!
Needed to overload Python’s < operator.
![Page 45: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/45.jpg)
Removal of Events Dictionary
Incorporate into the timestamps list, so list elements are nowof the form (time, event) instead of (time).
The bisect() operation still works!
Needed to overload Python’s < operator.
![Page 46: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/46.jpg)
Removal of Events Dictionary
Incorporate into the timestamps list, so list elements are nowof the form (time, event) instead of (time).
The bisect() operation still works!
Needed to overload Python’s < operator.
![Page 47: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/47.jpg)
Rewriting Event List Ops in C for Speed
“Best of both worlds”—core runs in C, but apps programmerstill writes in high-level Python.
Used SWIG Python/C“glue” tool. (Available for Java etc.too.)
SWIG very easy to learn, use.
We did have to be careful regarding reference counts.
![Page 48: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/48.jpg)
Rewriting Event List Ops in C for Speed
“Best of both worlds”—core runs in C, but apps programmerstill writes in high-level Python.
Used SWIG Python/C“glue” tool. (Available for Java etc.too.)
SWIG very easy to learn, use.
We did have to be careful regarding reference counts.
![Page 49: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/49.jpg)
Rewriting Event List Ops in C for Speed
“Best of both worlds”—core runs in C, but apps programmerstill writes in high-level Python.
Used SWIG Python/C“glue” tool. (Available for Java etc.too.)
SWIG very easy to learn, use.
We did have to be careful regarding reference counts.
![Page 50: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/50.jpg)
Rewriting Event List Ops in C for Speed
“Best of both worlds”—core runs in C, but apps programmerstill writes in high-level Python.
Used SWIG Python/C“glue” tool. (Available for Java etc.too.)
SWIG very easy to learn, use.
We did have to be careful regarding reference counts.
![Page 51: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/51.jpg)
Rewriting Event List Ops in C for Speed
“Best of both worlds”—core runs in C, but apps programmerstill writes in high-level Python.
Used SWIG Python/C“glue” tool. (Available for Java etc.too.)
SWIG very easy to learn, use.
We did have to be careful regarding reference counts.
![Page 52: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/52.jpg)
Rethinking Event List Algorithms
Lots of work in the past.
However, most algorithm-centric.
Typically “simulations of simulation,” not timing of actualprograms.
No consideration of systems issues, e.g. VM.
![Page 53: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/53.jpg)
Rethinking Event List Algorithms
Lots of work in the past.
However, most algorithm-centric.
Typically “simulations of simulation,” not timing of actualprograms.
No consideration of systems issues, e.g. VM.
![Page 54: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/54.jpg)
Rethinking Event List Algorithms
Lots of work in the past.
However, most algorithm-centric.
Typically “simulations of simulation,” not timing of actualprograms.
No consideration of systems issues, e.g. VM.
![Page 55: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/55.jpg)
Rethinking Event List Algorithms
Lots of work in the past.
However, most algorithm-centric.
Typically “simulations of simulation,” not timing of actualprograms.
No consideration of systems issues, e.g. VM.
![Page 56: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/56.jpg)
Rethinking Event List Algorithms
Lots of work in the past.
However, most algorithm-centric.
Typically “simulations of simulation,” not timing of actualprograms.
No consideration of systems issues, e.g. VM.
![Page 57: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/57.jpg)
Empirical Evaluation
Tested many different modifications of SimPy
original SimPy (SimPy)
SimPy with dictionary removed, but still all-Pythonimplementation (SimPyND)
SimPy with original event structures retained (though nodictionary) but operations implemented in C (PQArr)
SimPy modified to use C-language calendar queue (CQ)
SimPy modified to use C-language splay tree (Splay)
Many others were tried but found to be noncompetitive.
Testbeds:
Call center application. Indexed by arrival rates.
Hold Model. Indexed by coeff. of var. of service times.
![Page 58: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/58.jpg)
Empirical Evaluation
Tested many different modifications of SimPy
original SimPy (SimPy)
SimPy with dictionary removed, but still all-Pythonimplementation (SimPyND)
SimPy with original event structures retained (though nodictionary) but operations implemented in C (PQArr)
SimPy modified to use C-language calendar queue (CQ)
SimPy modified to use C-language splay tree (Splay)
Many others were tried but found to be noncompetitive.
Testbeds:
Call center application. Indexed by arrival rates.
Hold Model. Indexed by coeff. of var. of service times.
![Page 59: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/59.jpg)
Empirical Evaluation
Tested many different modifications of SimPy
original SimPy (SimPy)
SimPy with dictionary removed, but still all-Pythonimplementation (SimPyND)
SimPy with original event structures retained (though nodictionary) but operations implemented in C (PQArr)
SimPy modified to use C-language calendar queue (CQ)
SimPy modified to use C-language splay tree (Splay)
Many others were tried but found to be noncompetitive.
Testbeds:
Call center application. Indexed by arrival rates.
Hold Model. Indexed by coeff. of var. of service times.
![Page 60: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/60.jpg)
Empirical Evaluation
Tested many different modifications of SimPy
original SimPy (SimPy)
SimPy with dictionary removed, but still all-Pythonimplementation (SimPyND)
SimPy with original event structures retained (though nodictionary) but operations implemented in C (PQArr)
SimPy modified to use C-language calendar queue (CQ)
SimPy modified to use C-language splay tree (Splay)
Many others were tried but found to be noncompetitive.
Testbeds:
Call center application. Indexed by arrival rates.
Hold Model. Indexed by coeff. of var. of service times.
![Page 61: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/61.jpg)
Empirical Evaluation
Tested many different modifications of SimPy
original SimPy (SimPy)
SimPy with dictionary removed, but still all-Pythonimplementation (SimPyND)
SimPy with original event structures retained (though nodictionary) but operations implemented in C (PQArr)
SimPy modified to use C-language calendar queue (CQ)
SimPy modified to use C-language splay tree (Splay)
Many others were tried but found to be noncompetitive.
Testbeds:
Call center application. Indexed by arrival rates.
Hold Model. Indexed by coeff. of var. of service times.
![Page 62: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/62.jpg)
Empirical Evaluation
Tested many different modifications of SimPy
original SimPy (SimPy)
SimPy with dictionary removed, but still all-Pythonimplementation (SimPyND)
SimPy with original event structures retained (though nodictionary) but operations implemented in C (PQArr)
SimPy modified to use C-language calendar queue (CQ)
SimPy modified to use C-language splay tree (Splay)
Many others were tried but found to be noncompetitive.
Testbeds:
Call center application. Indexed by arrival rates.
Hold Model. Indexed by coeff. of var. of service times.
![Page 63: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/63.jpg)
Empirical Evaluation
Tested many different modifications of SimPy
original SimPy (SimPy)
SimPy with dictionary removed, but still all-Pythonimplementation (SimPyND)
SimPy with original event structures retained (though nodictionary) but operations implemented in C (PQArr)
SimPy modified to use C-language calendar queue (CQ)
SimPy modified to use C-language splay tree (Splay)
Many others were tried but found to be noncompetitive.
Testbeds:
Call center application. Indexed by arrival rates.
Hold Model. Indexed by coeff. of var. of service times.
![Page 64: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/64.jpg)
Empirical Evaluation
Tested many different modifications of SimPy
original SimPy (SimPy)
SimPy with dictionary removed, but still all-Pythonimplementation (SimPyND)
SimPy with original event structures retained (though nodictionary) but operations implemented in C (PQArr)
SimPy modified to use C-language calendar queue (CQ)
SimPy modified to use C-language splay tree (Splay)
Many others were tried but found to be noncompetitive.
Testbeds:
Call center application. Indexed by arrival rates.
Hold Model. Indexed by coeff. of var. of service times.
![Page 65: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/65.jpg)
Results
Summary, from fastest to slowest:
CQ ≈ PQArr > SplayTree > SimPyND > SimPy
![Page 66: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/66.jpg)
Results
Summary, from fastest to slowest:CQ ≈
PQArr > SplayTree > SimPyND > SimPy
![Page 67: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/67.jpg)
Results
Summary, from fastest to slowest:CQ ≈ PQArr >
SplayTree > SimPyND > SimPy
![Page 68: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/68.jpg)
Results
Summary, from fastest to slowest:CQ ≈ PQArr > SplayTree >
SimPyND > SimPy
![Page 69: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/69.jpg)
Results
Summary, from fastest to slowest:CQ ≈ PQArr > SplayTree > SimPyND >
SimPy
![Page 70: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/70.jpg)
Results
Summary, from fastest to slowest:CQ ≈ PQArr > SplayTree > SimPyND > SimPy
![Page 71: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/71.jpg)
Call Center Times Per Op, Lower Traffic
![Page 72: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/72.jpg)
Call Center Times Per Op, Higher Traffic
![Page 73: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/73.jpg)
Hold Model Times Per Op, Smaller COV
0 100 200 300 400 500 600 700 800 900
3
4
5
6
7
8
9
Length of event list
Tim
e pe
r op
erat
ion(
mic
rose
cond
s)
CQSimPySplay
![Page 74: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/74.jpg)
Hold Model Times Per Op, Larger COV
0 100 200 300 400 500 600 700 800 900
2
3
4
5
6
7
8
9
Length of event list
Tim
e pe
r op
erat
ion(
mic
rose
cond
s)
CQSimPySplay
![Page 75: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/75.jpg)
Scalability Issues
Even though CQ and PQArr were about equal in performance,PQArr appears not to scale well to larger event sets:
struct user time sys. time event op. time
PQArr 79.47 4.50 57.87CQ 33.24 3.95 12.69
![Page 76: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/76.jpg)
Scalability Issues
Even though CQ and PQArr were about equal in performance,PQArr appears not to scale well to larger event sets:
struct user time sys. time event op. time
PQArr 79.47 4.50 57.87CQ 33.24 3.95 12.69
![Page 77: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/77.jpg)
Scalability Issues
Even though CQ and PQArr were about equal in performance,PQArr appears not to scale well to larger event sets:
struct user time sys. time event op. time
PQArr 79.47 4.50 57.87
CQ 33.24 3.95 12.69
![Page 78: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/78.jpg)
Scalability Issues
Even though CQ and PQArr were about equal in performance,PQArr appears not to scale well to larger event sets:
struct user time sys. time event op. time
PQArr 79.47 4.50 57.87CQ 33.24 3.95 12.69
![Page 79: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/79.jpg)
Number of Page Faults, Call Center (lower traffic)
0 150 300 450 600 750 900 1200 1500
10207
15088
19969
24850
29731
34612
39493
44374
Length of event list
CQSimPySplayPQArrSimPyND
![Page 80: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/80.jpg)
Number of Page Faults, Hold Model (medium COV)
0 100 200 300 400 500 600 700 800 900
1168.750
1753.125
2337.500
2921.875
3506.250
4090.625
4675.000
Length of event list
CQSimPySplay
![Page 81: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/81.jpg)
Discussion of VM Issues
CQ paging performance poor in our experiments, run on32-bit PCs running Linux kernel 2.6.20.
Preliminary experiments on a 64-bit PC, same kernel, suggestgreater variability.
∴ CQ may do poorly on some systems.
![Page 82: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/82.jpg)
Discussion of VM Issues
CQ paging performance poor in our experiments, run on32-bit PCs running Linux kernel 2.6.20.
Preliminary experiments on a 64-bit PC, same kernel, suggestgreater variability.
∴ CQ may do poorly on some systems.
![Page 83: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/83.jpg)
Discussion of VM Issues
CQ paging performance poor in our experiments, run on32-bit PCs running Linux kernel 2.6.20.
Preliminary experiments on a 64-bit PC, same kernel, suggestgreater variability.
∴ CQ may do poorly on some systems.
![Page 84: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/84.jpg)
Discussion of VM Issues
CQ paging performance poor in our experiments, run on32-bit PCs running Linux kernel 2.6.20.
Preliminary experiments on a 64-bit PC, same kernel, suggestgreater variability.
∴ CQ may do poorly on some systems.
![Page 85: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/85.jpg)
Conclusions and Discussion
Hybrid interpreted/C approach “best of bothworlds”—transparent to apps programmer but with betterperformance
Attention to non-algorithmic issues, e.g. paging, may beworthwhile.
What about JIT? Tried Pyscho but with disappointing results.
![Page 86: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/86.jpg)
Conclusions and Discussion
Hybrid interpreted/C approach “best of bothworlds”—transparent to apps programmer but with betterperformance
Attention to non-algorithmic issues, e.g. paging, may beworthwhile.
What about JIT? Tried Pyscho but with disappointing results.
![Page 87: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/87.jpg)
Conclusions and Discussion
Hybrid interpreted/C approach “best of bothworlds”—transparent to apps programmer but with betterperformance
Attention to non-algorithmic issues, e.g. paging, may beworthwhile.
What about JIT? Tried Pyscho but with disappointing results.
![Page 88: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/88.jpg)
Conclusions and Discussion
Hybrid interpreted/C approach “best of bothworlds”—transparent to apps programmer but with betterperformance
Attention to non-algorithmic issues, e.g. paging, may beworthwhile.
What about JIT?
Tried Pyscho but with disappointing results.
![Page 89: Revisiting the Issue of Performance Enhancement of ...matloff/matloff/public_html/VASlides.pdf · Revisiting the Issue of Performance Enhancement of Discrete Event Simulation Software](https://reader034.fdocuments.net/reader034/viewer/2022051814/6038cddb11e0ce031753123f/html5/thumbnails/89.jpg)
Conclusions and Discussion
Hybrid interpreted/C approach “best of bothworlds”—transparent to apps programmer but with betterperformance
Attention to non-algorithmic issues, e.g. paging, may beworthwhile.
What about JIT? Tried Pyscho but with disappointing results.