Поскольку это CPU, на время выполнения будет влиять общая загрузка процессора. И для CPU абсолютно нормально что время от раза к разу гуляет. В общем, 0,07 секунды разницы - не показатель.
500ms - как-то очень много, на мой взгляд. Дебажная сборка? Через GitTickCount() время попробуйте посмотреть, может профайлер что-то не то показывает...
Координаты в каком формате, в какой системе? Допустимая точность?
Если у вас UTM - там сразу координаты в метрах, дальше - простейшая математика вида "найти расстояние между точками с координатами".
Digital Signal Processing, но ардуина не потянет наверняка без навесного оборудования.
Посмотрите еще на штуку под названием "Pure Data" - там можно программно построить обработку.