mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	The dynamic performance hack is (mostly) done.
This commit is contained in:
		
							parent
							
								
									ea32cbb24e
								
							
						
					
					
						commit
						27b7f9f91e
					
				
					 1 changed files with 11 additions and 10 deletions
				
			
		
							
								
								
									
										21
									
								
								PLAN.txt
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								PLAN.txt
									
										
									
									
									
								
							| 
						 | 
					@ -4,16 +4,6 @@ Project: core implementation
 | 
				
			||||||
Still to do
 | 
					Still to do
 | 
				
			||||||
-----------
 | 
					-----------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
More performance work -- one particular test, test_descr.inherits(),
 | 
					 | 
				
			||||||
is still about 50% slower with dynamic classes. :-(  The approach of
 | 
					 | 
				
			||||||
choice would be:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Add a list of weak refs to derived classes to each dynamic
 | 
					 | 
				
			||||||
    class, and trap setattr+delattr on the base class so that they
 | 
					 | 
				
			||||||
    update the tp_XXX slot in each derived class when the base class
 | 
					 | 
				
			||||||
    __XXX__ gets set or deleted.  More work, but more gain (zero waste
 | 
					 | 
				
			||||||
    in slot_tp_XXX when __XXX__ is not overridden).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Add __del__ handlers?
 | 
					Add __del__ handlers?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Allow assignment to __bases__ and __dict__?
 | 
					Allow assignment to __bases__ and __dict__?
 | 
				
			||||||
| 
						 | 
					@ -35,6 +25,17 @@ implemented.
 | 
				
			||||||
Done (mostly)
 | 
					Done (mostly)
 | 
				
			||||||
-------------
 | 
					-------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					More performance work -- one particular test, test_descr.inherits(),
 | 
				
			||||||
 | 
					is still about 50% slower with dynamic classes. :-(  The approach of
 | 
				
			||||||
 | 
					choice would be:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Add a list of weak refs to derived classes to each dynamic
 | 
				
			||||||
 | 
					    class, and trap setattr+delattr on the base class so that they
 | 
				
			||||||
 | 
					    update the tp_XXX slot in each derived class when the base class
 | 
				
			||||||
 | 
					    __XXX__ gets set or deleted.  More work, but more gain (zero waste
 | 
				
			||||||
 | 
					    in slot_tp_XXX when __XXX__ is not overridden).
 | 
				
			||||||
 | 
					*** That's done now, with great success. ***
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Make __dynamic__ the default.  *** done (but more performance work
 | 
					Make __dynamic__ the default.  *** done (but more performance work
 | 
				
			||||||
needs to be done). ***
 | 
					needs to be done). ***
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue