This is a second iteration on my previous post.
Seconds for 25,000 Iterations | ||||
Number | Base | ToBase10 | ToBase10-2 | Change |
1111 | 2 | 1.08 | 0.656 | -40% |
1523 | 6 | 1.09 | 0.547 | -50% |
15A23 | 26 | 1.86 | 0.703 | -38% |
Take the above for what it’s worth. If this is a time critical conversion and you have tight control over the number being converted – you may opt for using ToBase10-2 and wrapping it in a vl-catch-all-apply. Either way, it’s your call.
(defun ToBase10-2(NumBase InputValue / )(setq
indx 0
;;Get the list of multipliers
temp (mapcar
(function
(lambda (x)
(if (< 57 x)
(- x 55)
(- x 48)
)
)
)
(reverse (vl-string->list
(if (= 'INT (type InputValue))
(itoa InputValue)
InputValue
)
)
)
)
rtval 0
)
(repeat (length temp)
(setq
digit (nth indx temp)
rtval (+ rtval (* Digit (expt NumBase indx)))
indx (1+ indx)
)
)
rtval
)
No comments:
Post a Comment