Как стать автором
Обновить

В go 1.22 провели изящный рефакторинг части когда по увеличение емкости среза на x1.25 относительно порога значения емкости в 256.
Не большой тест на arm M1 Pro:

const threshold = 256 
//v 1.21
func BenchmarkName121(b *testing.B) {  
  var newcap = threshold  
  var newLen = 100_000_000_000  
  for 0 < newcap && newcap < newLen {   
    newcap += (newcap + 3*threshold) / 4 
  }  
  if newcap <= 0 {   
    newcap = newLen  
  }
}

//v 1.22
func BenchmarkName122(b *testing.B) {
  var newcap = threshold 
  var newLen = 100_000_000_000  
  for {    
    newcap += (newcap + 3*threshold) >> 2    
    if uint(newcap) >= uint(newLen) {   
      break   
    }  
  }
}

В 8 из 10 прогонов результат одинаковый, в оставшихся - 121 показывает лучший результат
В 8 из 10 прогонов результат одинаковый, в оставшихся - 121 показывает лучший результат

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Публикации

Истории

Работа

Go разработчик
135 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн