2010-09-30 2 views
0

Я работаю над приложением в реальном времени (позволяет называть его App1), которое взаимодействует с другим приложением (App2). Я использовал VS2008, и оба приложения находятся на C++. Недавно я преобразовал проект App1 в VS2010, и сразу после этого он начал сбой (я использую VS2010 Premium Ver. 10.0.30319.1). Сброс сбоя показывает, что непосредственно перед сбоем App2 пытается отправить запрос в App1 несколько раз без получения ответа. Поэтому я подумал, что, возможно, преобразование App1 в VS2010 прикручило производительность, и для App1 требуется много времени для генерации ответа. Использует ли VS2010 какое-либо влияние на производительность (по сравнению с VS2008)?Производительность приложений на C++ в VS2010 и VS2008

+0

Что такое «долгое время?» Сбой приложения после того, как код меньше микросекунды? –

+1

Он делает. Он, в частности, поддерживает ссылки rvalue и определяет механизмы перемещения/перенос операторов назначения для классов в стандартной библиотеке. В зависимости от использования STL это может привести к быстрой работе вашей программы. – avakar

+1

Во всяком случае, я ожидаю, что переход на VC10 ускорит ваше приложение из-за постоянно совершенствующейся логики оптимизации. Вы сначала посмотрели, не сломали ли вы что-то, когда портировали, или вы просто прыгнули прямо на «microsoft sucks?». –

ответ

6

Ну, конечно, это имеет «некоторый» эффект на производительность. Компилятор новее, и во многих отношениях лучше.

Проблема, с которой вы страдаете, вряд ли будет связана с тем, что компилятор работает неправильно. Возможно, вы сделали предположение о том, что больше не выполняется в рамках возможностей C++ 0x, представленных в 2010 году, но я бы предположил, что у вас есть ошибка в версии VS2008. Вам нужно выяснить, почему его висит и посмотреть, что вы можете сделать, чтобы остановить это зависание. Весьма вероятно, что тайминги были изменены с использованием 2010 года и предположения, которые вы сделали (и вы никогда не должны предполагать, что все будет работать определенным образом ... либо знать, либо искать его) вернулось, чтобы укусить вас задница.

Наверное, не тот ответ, который вы искали, хотя ... но я определенно поставил бы на него ошибку!

+0

хорошие моменты, спасибо, я думаю, что я перейду на VS2008 и скомпилирую и посмотрю, сработает ли он снова или нет. Если это не так, то это, вероятно, связано с некоторым «предположением». – Ahmad

+0

Лично я запускаю 2008 и 2010 годы рядом друг с другом (то есть оба установлены в моей системе dev). Поскольку у меня появляется такая возможность, весь мой код обновляется до 2010 года, и до сих пор у меня не было никаких проблем (поэтому я считаю его вероятным фактическим ошибкой). – Goz

1

Дело в том, чтобы не догадываться об этом и этом.

Что нужно сделать, это найти ошибку и исправить ее.

Это сложно с асинхронными приложениями, которые координируются с передачей сообщений. То, как я обрабатываю такие задания, - это создать подробный журнал сообщений о трафике сообщений с каждым из приложений. Я беру эти журналы и объединяя их вместе в одну временную шкалу. Затем я изучаю график и ищу работу, которая не работает должным образом.

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

+0

Точно; На самом деле я считаю, что нужно рассмотреть все возможности и попробовать их (вот что я подразумеваю под гадать). У меня уже есть этот журнал, и я вижу, где задержка, и в каком типе сообщения. Я проанализировал все новые функции и не смог найти никакой связи между этими сообщениями и новыми функциями; поэтому моя следующая догадка заключается в том, что это вызвано каким-то изменением таймингов 2010 года. Поэтому я тестирую, и если это проблема, я ее исправлю. – Ahmad

+0

@ Амад: Похоже, вы знаете, что делать. По моему опыту «по угадыванию и по golly» походит на медленный путь в Китай. Если есть диагностическая техника, которая говорит мне о проблеме, даже если она кажется медленной и утомительной, она быстрее и увереннее, чем угадывание. Удачи. –

Смежные вопросы