Ну, во-первых, пожалуйста, сообщите нам, как определяется evaluacion
, и поместите туда do
, который соответствует while
; Я предполагаю, что это сразу после строки "int actual".
Во-вторых, похоже, вы вызываете mmap () чаще, чем нужно; как часто revisanotas()
вызывается с тем же fd
? Сам вызов mmap
медленный, как malloc
; скорость - это когда вы используете сопоставленный файл, в этом случае данные указываются как buffer
.
В-третьих, вычислите datos.st_size/(sizeof(evaluacion))
один раз вне цикла и измените предложение while
для сравнения с ним. Текущий код выглядит так, как будто он выполняет деление один раз за итерацию в цикле, и деление происходит медленно.
Посмотрите, поможет ли это кому-нибудь.