Первый будет работать лучше, чем регулярное выражение, когда строка соответствует двойному. Например, он очень быстро анализируется, когда распознаватель жестко запрограммирован, как это было бы с Double.parse. Также нет ничего, что поддерживало бы то, что Java определяет как Double как строка. Не говоря уже о Double.parseDouble (), который легче читать.
Другое решение не будет скомпилировано, поэтому первое, что нужно сделать регулярному выражению, - это скомпилировать и проанализировать выражение регулярного выражения, затем запустить это выражение, затем вам нужно будет выполнить Double.parseDouble ( ), чтобы получить его в два раза. И это будет сделано для каждого числа, переданного ему. Вы можете оптимизировать его с помощью Pattern.compile (), но выполнение выражения будет выполняться медленнее. Особенно, когда вам нужно запустить Double.doubleParse, чтобы получить значение в double.
Да, исключения не являются супербыстрыми, но вам придется заплатить эту цену только при разборе ошибки. Если вы не планируете видеть много ошибок, то я не думаю, что вы заметите замедление сбора трассировки стека на броске (именно поэтому исключения работают плохо). Если вы столкнетесь только с несколькими исключениями, то производительность не будет проблемой. Проблема в том, что вы ожидаете удвоения, и, скорее всего, это не было какой-то ошибкой конфигурации, поэтому сообщите пользователю и выйдите из системы, либо выберите подходящее значение по умолчанию и продолжайте. Это все, что вы можете сделать в этих случаях.