|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
скорее общий вопрос. есть адский статический метод на 33.000 строк запускаю прогу, затем вызываю етот метод. если скомпилено под x86, то проблем нет, всё трудится нормально , быстро шустро. памяти прога ест 5Мб. НО стоит мне скомпилить под x64 (ничего в коде не меняя), то тут начинается веселье. съеденная память улетает в небеса. до 2 Гб. проц адски начинает тупить. У диспетчера задач появилась надпись -"не отвечает". в итоге банально грохается приложение , и ОС начинает приходить в себя. Что там происходит. с чего такой разный результатен? я конечно могу предполагать , но хотелось бы услышать другие мнения. чё Framework3.5 такого вытворяет с откомпилированным оптимизированным кодом, что ему плохеет. типа его начало , первые 40 строк Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
вот так выглядит диспетчер , после закрытия проги Справедливости ради, Framework 4.0 всё-таки этот проект запускает, и он даже полностью исполняется ( предварительно для загрузки запросив 500 Мб) Но даже не смотря на такие запросы работает в 2 раза медленнее x86. ПС. потом немного поигрался. немного поменял сигнатуру метода, а результат сильно изменился. время загрузки отличалось в 4.5 раза я в прострации. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2012, 21:31 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
beg-in-er, попробуй предварительно через ngen прогнать программу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2012, 22:49 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
bazile, а чем это должно помочь беде? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2012, 23:32 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
bazile, конечно nreg решает какие-то вопросы JIT компиляции. но тем не менее , хочется понять , что фрейм там творит. почему в зависимости от целевой платформы такой разительный эффект. не , понятно , что данный статический метод можно ужать до 10 строк и не парится , но это отдельная история почему сделано так. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2012, 23:59 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
SolYUtorа чем это должно помочь беде? Предположение что JIT-компилятор может слишком много памяти тратить. Имея ngen-образ программа будет выполняться без JIT и можно будет сравнить поведение. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 00:14 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
beg-in-er, а поднять версию до 4.5 нельзя? мс вроде где то предупреждал о возможных проблемах ( пытаюсь найти) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 00:14 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 00:18 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
bazile Имея ngen-образ программа будет выполняться без JIT и можно будет сравнить поведение. не , понятно, что сделав бинарный образ, теперь загрузка идёт именно так , как и ожидалось. но компиляцыя тоже долго шла ( 4-5 секунд ) я даже боюсь подсовывать версию FW3.5. Где-то в степи http://technet.microsoft.com/ru-ru/subscriptions/ms241064.aspx почитаем ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 00:50 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
beg-in-er, может стека не хватает из за размера указателя на32 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 01:04 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
beg-in-er, можно еще переписать функцию, и использовать смещение от головы массива, или бить стек на мелкие стеки, что вы и сделали ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 01:38 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
beg-in-er, это что, двоичный поиск в отсортированном массиве? Ну сделайте его циклом, это же ад какой-то из if-ов... Если операция деления для вас слишком дорогая, а количество элементов массива является степенью 2 (4096 = 2^12), используйте битовые сдвиги (>>). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 10:29 |
|
что происходит при загрузки приложений x86 и x64? почему разный эффект
|
|||
---|---|---|---|
#18+
HoBTIDbeg-in-er, это что, двоичный поиск в отсортированном массиве? Ну сделайте его циклом, это же ад какой-то из if-ов... ну в данном случае , да поиск. подумаешь ад. создавать то его плёвое дело. создал , зашил и забыл. зачем в него вообще смотреть. Если операция деления для вас слишком дорогая, используйте битовые сдвиги (>>). ну я в курсе. я ж написал, что на цикл можно заменить и не парится. меня заняло то , что в двух случаях такой сильный контраст. внятного объяснения которому я лично не нахожу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 10:47 |
|
|
start [/forum/topic.php?fid=20&fpage=187&tid=1405628]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 23ms |
total: | 159ms |
0 / 0 |