mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	Minor performance tweak for deque.index() with a start argument (GH-9440)
This commit is contained in:
		
							parent
							
								
									fb3e9c00ed
								
							
						
					
					
						commit
						b46ad5431d
					
				
					 2 changed files with 12 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -288,6 +288,14 @@ class TestBasic(unittest.TestCase):
 | 
			
		|||
                    else:
 | 
			
		||||
                        self.assertEqual(d.index(element, start, stop), target)
 | 
			
		||||
 | 
			
		||||
        # Test large start argument
 | 
			
		||||
        d = deque(range(0, 10000, 10))
 | 
			
		||||
        for step in range(100):
 | 
			
		||||
            i = d.index(8500, 700)
 | 
			
		||||
            self.assertEqual(d[i], 8500)
 | 
			
		||||
            # Repeat test with a different internal offset
 | 
			
		||||
            d.rotate()
 | 
			
		||||
 | 
			
		||||
    def test_index_bug_24913(self):
 | 
			
		||||
        d = deque('A' * 3)
 | 
			
		||||
        with self.assertRaises(ValueError):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1050,8 +1050,10 @@ deque_index(dequeobject *deque, PyObject *const *args, Py_ssize_t nargs)
 | 
			
		|||
        start = stop;
 | 
			
		||||
    assert(0 <= start && start <= stop && stop <= Py_SIZE(deque));
 | 
			
		||||
 | 
			
		||||
    /* XXX Replace this loop with faster code from deque_item() */
 | 
			
		||||
    for (i=0 ; i<start ; i++) {
 | 
			
		||||
    for (i=0 ; i < start - BLOCKLEN ; i += BLOCKLEN) {
 | 
			
		||||
        b = b->rightlink;
 | 
			
		||||
    }
 | 
			
		||||
    for ( ; i < start ; i++) {
 | 
			
		||||
        index++;
 | 
			
		||||
        if (index == BLOCKLEN) {
 | 
			
		||||
            b = b->rightlink;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue