Это - преждевременная оптимизация для разработки на медленных машинах?

(Адаптированный из моего комментария к другому ответу.)

Да, Вы должны. Целое число пенсов работает только, пока Вы не должны представлять, скажем, половину цента. Если это происходит, Вы могли бы изменить его для подсчета полуцентов, но что, если тогда необходимо представить четверть цента или одну восьмую цента?

единственным надлежащим решением является NSDecimalNumber (или что-то как он), который откладывает проблему к 10^-128Вў (т.е.
0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000001Вў).

(Иначе была бы арифметика произвольной точности, но это требует отдельной библиотеки, такой как библиотека GNU MP Bignum . GMP находится под LGPL. Я никогда не пользовался той библиотекой и не знаю точно, как она работает, таким образом, я не мог сказать, как хорошо она будет работать на Вас.)

[Редактирование: По-видимому, по крайней мере один person— Brad Larson— думает, что я говорю о двоичном файле, с плавающей точкой где-нибудь в этом ответе. Я не.]

5
задан Ewan Todd 21 October 2009 в 16:32
поделиться

8 ответов

Slow computers are not going to help you find your performance problems.

If your test data is only a few hundred rows in a table your db will cache it all and you'll never find badly written queries or bad table/index design. If your server application is not multi-threaded server you will not find that out until you stress test it with 500 users. Or if the app bottlenecks on bandwidth.

Optimization is "A Good Thing" but as I say to new developers who have all sorts of ideas about how to do it better 'I don't care how quickly you give me the wrong answer'. Get it right first, then make it faster when you find a bottleneck. An experienced programmer is going to design and build it reasonably well to start with.

If performance is really critical (real time? millisecond-transactions?) then you need to design and implement a set of benchmarks and tools to scientifically prove to yourselves that your changes are making it faster. There are way too many variables out there that affect performance.

Plus there's the classic programmer excuse they will bring out - 'but it's running slow because we have deliberately picked slow computers, it will run much faster when we deploy it.'

If your colleague thinks its important give him a slow computer and put him in charge of 'performance' :-)

10
ответ дан 18 December 2019 в 05:24
поделиться

Думаю, это будет зависеть от того, что вы делаете и какова целевая аудитория.

Если вы пишете программное обеспечение для фиксированного оборудования (скажем, консольных игр), используйте оборудование (по крайней мере, тестовое оборудование), подобное или такое же, как то, на котором вы будете развертывать.

Если вы разрабатываете настольные приложения или что-то в этой области, затем разработайте на любой машине, которую вы хотите, а затем настройте ее для работы на желаемом оборудовании с минимальной спецификацией. Точно так же, если вы разрабатываете собственное программное обеспечение, скорее всего, будет минимальная спецификация для машин, которые компания хочет купить. В этом случае разрабатывайте на быстрой машине (чтобы сократить время разработки и, следовательно, затраты) и тестируйте в соответствии с этой минимальной спецификацией.

В итоге, разрабатывайте на самой быстрой машине, которую вы можете получить в руки, и тестируйте на минимуме или точное оборудование, которое вы

3
ответ дан 18 December 2019 в 05:24
поделиться

Это должна быть вики сообщества, так как это довольно субъективно и нет «правильного» ответ.

Тем не менее, вы должны развиваться на самой быстрой машине, доступной вам. Да, все, что медленнее, вызовет раздражение и побудит вас исправить замедление, но только по очень высокой цене:

Ваша продуктивность как программиста напрямую зависит от количества вещей, которые вы можете держать в голове, и всего, что замедляет вашу работу. процесс или вообще препятствует вам, увеличивает количество времени, которое у вас есть для удержания этих идей в краткосрочной памяти, что увеличивает вероятность того, что вы забудете их и вам придется их заново изучать.

Ожидание компиляции программы позволяет множество ошибок, потенциальных проблем и исправлений, которые вылетят из вашей головы, когда вы отвлечетесь. Ожидание загрузки диалога или завершения запроса прерывает вас аналогичным образом.

Даже если вы проигнорируете этот эффект, вы все равно поймете истину более позднего утверждения - ранняя оптимизация заставит вас гоняться за собой по кругу, ломая код, который уже работает, и угадывать (часто с плохой точностью), где что-то может застрять. Прежде всего, правильно спроектируйте свой код, и вы можете забыть об оптимизации, пока она не успокоится на некоторое время, после чего любая необходимая оптимизация станет очевидной.

21
ответ дан 18 December 2019 в 05:24
поделиться

из любви к Кодду, используйте инструменты профилирования, а не медленные машины разработки!

1
ответ дан 18 December 2019 в 05:24
поделиться

Следует избегать оптимизации, разве это не дало нам Vista? : p

Но если серьезно, это всегда вопрос компромиссов. Важные вопросы, которые стоит задать себе

Какую платформу будут использовать ваши конечные пользователи? Могу ли я отказаться от циклов? Что произойдет, если я это сделаю?

Я согласен с большинством в том, что начальная разработка должна выполняться на самой быстрой или наиболее эффективной (не обязательно на той же самой) машине, доступной вам. Но для запуска тестов запускайте его на своей целевой платформе и тестируйте часто и рано.

1
ответ дан 18 December 2019 в 05:24
поделиться

If you are programming on hardware that is close to the final test and production environments, you tend to find that there are less nasty surprises when it comes time to release the code.

I've seen enough programmers get side-swiped by serious, but unexpected problems caused by their machines being way faster than their most of their users. But also, I've seen the same problem occur with data. The code is tested on a small dataset and then "crumbles" on a large one.

Any differences in development and deployment environments can be the source of unexpected problems.

Still, since programming is expensive and time-consuming, if the end-user is running slow out-of-date equipment, the better solution is to deal with it at testing time (and schedule in a few early tests just to check usability and timing).

Why cripple your programmers just because you're worried about missing a potential problem? That's not a sane development strategy.

Paul.

2
ответ дан 18 December 2019 в 05:24
поделиться

Depends on your time to delivery. If you are in a 12 month delivery cycle then you should develop on a box with decent speed since your customers' 12 months from now will have better "average" boxes than the current "average".

As your development cycle approaches "today", your development machines should approach the current "average" speed of your clients' boxes.

-1
ответ дан 18 December 2019 в 05:24
поделиться

I typically develop on the fastest machine I can get my hands on.

Most of the time I'm running a debug build, which is slow enough already.

0
ответ дан 18 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: