Kayan nokta ve geri dönüş, CPU seviyesinde büyük bir zaman kaybı gibi görünüyor.
Ian Nelson'ın çözümü:
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
Basitleştirilebilir:
int pageCount = (records - 1) / recordsPerPage + 1;
AFAICS, Brandon DuRette'in işaret ettiği taşma hatasını içermiyor ve sadece bir kez kullandığından, bir yapılandırma dosyasından değeri almak için pahalı bir işlevden geliyorsa recordPerPage'i özel olarak depolamanıza gerek yok. şey.
Yani config.fetch_value bir veritabanı araması falan kullandıysa, bu verimsiz olabilir:
int pageCount = (records + config.fetch_value('records per page') - 1) / config.fetch_value('records per page');
Bu, gerçekten ihtiyacınız olmayan, muhtemelen (küçük) bellek sonuçları olan ve çok fazla yazılan bir değişken oluşturur:
int recordsPerPage = config.fetch_value('records per page')
int pageCount = (records + recordsPerPage - 1) / recordsPerPage;
Bu yalnızca bir satırdır ve verileri yalnızca bir kez alır:
int pageCount = (records - 1) / config.fetch_value('records per page') + 1;