Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326

Открыть новую тему     Написать ответ в эту тему

V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
         
Обсуждаем новые возможности и баги
 
Просьба писать про Embarcadero RAD Studio XE5, XE6, XE7, XE8, 10.x (Seattle, Berlin,Tokyo)
  По вопросам скачивания - Тема в Варезнике (lite-версии тут)
  Вопросы по неюникодным версиям Delphi — шестая бумага
  Бесплатные Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus
  Коммерческие компоненты и утилиты для Delphi/BCB
  Вопросы по компонентам для Delphi, C++ Builder разных версий
  Новые языковые возможности, начиная с Delphi 2005 по XE4 — здесь, и New!здесь еще
  Англоязычный официальный форум Embarcadero — здесь
  Embarcadero Quality Central, веб интерфейс — здесь, новый Quality Portal тут
  Программирование на Delphi — викиверситет
  Другие ресурсы
   Предыдущие бумаги
 
     Вопросы ..XE4       Вопросы ..XE3    Вопросы ..XE2      
  Вопросы ..2009-XE    Вопросы ..<2009 / ч.5    Вопросы ..<2009 / ч.4      
  Вопросы ..<2009 / ч.3    Вопросы ..Delphi 2 / ч.2    Вопросы ..Delphi  

  Выключение встроенного эксперта Castalia  для XE8 (иногда помогает при вылетах и тормозах)  
  Полезные плагины(эксперты)

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 15:25 11-09-2013 | Исправлено: Komandor, 15:49 31-03-2024
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av

Цитата:
Цитата:
Покажи мне пример, когда, проблема фрагментации стала для натива стала критичной.  
 
Гуглиться на раз.  

там чел  коммитит 6-7 блоков по 380 мегабайт, это идет в обход MM. А потом освобождает.
В 32-битном режиме!
идиот..
 
 Такая задача либо для 64-разрядных машин, где ,большой фрагментации не будет, либо для специаированного MM.  
 
Он сам виноват. Не такая и проблема: следить чтобы 6-7 блоков не фрагментировались. Это и ежу понятно.
 
У тебя все примеры такие дурацкие??

Цитата:
Что работает быстрее: последовательный просмотр памяти или прыжки по разным участкам? Так вот первый сценарий это GC, второй - подсчет ссылок.  

В плане кэша, ведь ты говоришь о нем: если участок больше 64 байт, линейки кеша, то разницы нет.
Конечно есть префетч, и накладные расходы на стороне RAM для пересылки и вычисления адреса: там, действительно, несколько последовательных чтений или записей выгоднее (DRAM burst).  
Но это не поможет : выигрыш невелик по сравнению с ценой кэшевого промаха.
 
Другими словами, рандомные адреса, не влияют на обработку длинных в массивах(так как там все последовательно), ни на локальные переменные(то все последовательно).
 
Напротив, наличие активного GC в отдельном потоке, потребляет невеликие ресурсы кэша 3-го уровня. А в процессорах Интел, и вовсе активный GC может вызвать обнуление кэша L2 в другом ядре.
 
Что же до остального, типа строк, то не даст последовательное размещение особых преимуществ, если объекты больше 64-байт.
Ручное управление памятью тоже не серебряная пуля, но там намного больше контроля. Больше возможностей.
 
А крохотные объекты  обходятся дорого везде: причем GC с ними работает хуже: приходится вычислять достижимость каждого из целой тучи.
 

Цитата:
 А чего не на 4 или 8?
а того, что при вычислении размера буфера, программисты чаще всего ошибаются на 1 элемент, как в том случае, который ты упоминал.
Опыт, батенька

Цитата:
Я тебе предлагал уже самому посмотреть на счетчики любого дотнетовского приложения. Всё от ситуации зависит, когда я мониторил одну софтину там GC кушал сотые доли процента.  

мы далее рассмотрим время GC, только поскольку ты использовал JVM в своем примере, то о ней и будем говорить.
 

Цитата:
Кроме того, что не пригоден для использования в продакшене? Ничем.  

Кто сказал? Форк ScaleMM включен даже в дистрибуцию mORMot. Он вполне юзабелен.
 

Цитата:
Сравнивать iOS и Android, для поисков истины в споре ARC vs. GC, вообще глупо т.к. iOS является оптимизированным решением для железа единственного вендора, а Android универсальная ОС работающая на диком зоопарке разношерстного говна. У меня аппарат далеко не флагман, скорее середнячек. .  

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

Цитата:
Памяти там 2Gb, но свободной почти гигабайт
вот тебе и ответ. GC может быть хорош, когда памяти вдвое более требуемой.
в покое есть половина, а как начинается нагрузка, GC забирает эту память своим оверхедом.
---------
теперь по примеру.
У меня нет оксиджена, да и вообще писать на нем, таргетируя под JVM, -- имхо извращение, так что я написал аналогичный код на жабе.
Прежде всего скажу, что в твоем коде в итерации забирает  не более  30 мегабайт=(12букв*2*10+48(размер объекта) )*100'000. Так не пойдет. Нужно создать близкую к предельной нагрузку.
Второе, нужно условиться, сколько же памяти мы разрешаем JVM. Как раз для того, чтобы рассчитать нагрузку.
 
И третье, код , который ты привел на оксиджене, ужасен. Ну зачем пересоздавать StringBuilder? Это замедляет код почти в два раза! За такое нужно увольнять с формулировкой "нахер".  
 
JVM, которую я использовал  

Код:
 
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) Client VM (build 25.25-b02, mixed mode, sharing)
 

 
вот код
Код Delphi
Проект iDea, как и проект Delphi, с бинарниками доступны по ссылке
https://yadi.sk/d/7K10xzn3dpbF2
Я сейчас на слабой машине, поэтому все под XP/32
 
ключ Xmx400m задает предел кучи 400 Мб, ключ  Xms200m задает начальный размер кучи в 200 мегабайт(это дает фору JVM)

Код:
 
>java -Xms200m -Xmx400m -Xmn300m    -jar untitled.jar 100000 20 1
cached sb
3 args, 20 tries
string size:36, element size:408
Press enter to start
 
Memory 387 973 120, using 100 000 elements=39 843Kb(10 % of free heap)
total:184 384Kb, free:174 549Kb
used? memory:9 834Kb
done pass in 266 (13 per 5000 el)
done pass in 234 (11 per 5000 el)
done pass in 375 (18 per 5000 el)
done pass in 235 (11 per 5000 el)
done pass in 875 (43 per 5000 el)
done pass in 234 (11 per 5000 el)
done pass in 1 453 (72 per 5000 el)
done pass in 203 (10 per 5000 el)
done pass in 235 (11 per 5000 el)
done pass in 406 (20 per 5000 el)
done pass in 219 (10 per 5000 el)
done pass in 968 (48 per 5000 el)
done pass in 219 (10 per 5000 el)
done pass in 875 (43 per 5000 el)
done pass in 219 (10 per 5000 el)
done pass in 219 (10 per 5000 el)
done pass in 500 (25 per 5000 el)
done pass in 218 (10 per 5000 el)
done pass in 703 (35 per 5000 el)
done pass in 204 (10 per 5000 el)
---------------------------------
total:280 120Kb, free:140 528Kb
used? memory:139 591Kb, delta:129 757Kb
---------------------------------
Done: 8 875 time done;
---------------------------------
---------------------------------
8 875 time collected;
---------------------------------
total:280 120Kb, free:276 339Kb
used? memory:3 780Kb, delta:-6 054Kb
total:280 120Kb, free:208 528Kb
used? memory:71 591Kb, delta:61 756Kb
 

итак, 8.56 секунд для 100K элементов в 20 итерациях
замечу на полях, Xmn300m форсирует пул молодых объектов до 300 метров, что увеличивает скорость вдвое: без этого свитча время будет около 16с.
 
теперь Delphi-32

Код:
 
>untitled  100000 20 1 400m
Limit Memory to 400MB
Acquire priviledge:TRUE
handle:1972
Result:TRUE
Using elements:100000; Directly Allocated: 52343Kb
---------
Done in 719; 35 per 5000 el
Done in 703; 35 per 5000 el
Done in 719; 35 per 5000 el
Done in 719; 35 per 5000 el
Done in 687; 34 per 5000 el
Done in 719; 35 per 5000 el
Done in 719; 35 per 5000 el
Done in 703; 35 per 5000 el
Done in 718; 35 per 5000 el
Done in 704; 35 per 5000 el
Done in 703; 35 per 5000 el
Done in 718; 35 per 5000 el
Done in 704; 35 per 5000 el
Done in 718; 35 per 5000 el
Done in 719; 35 per 5000 el
Done in 703; 35 per 5000 el
Done in 703; 35 per 5000 el
Done in 719; 35 per 5000 el
Done in 719; 35 per 5000 el
Done in 703; 35 per 5000 el
Done in 734; 36 per 5000 el
Done: 14953
 

14.85 секунд. Delphi медленнее
Но это -- при том, что размер тестового массива очень мал, в сравнении с размером доступной кучи.
 
По моим подсчетам, яве требуется от 38 для работы с массивом: около 360 байт на 10 строк плюс 48 байт на объект, ну и 4 байта на список.
Для Delphi требуется не менее 60мегабайт, из-за оверхеда строк по 12байт на каждую.
По моим вычислениям, именно 60 метров использовала JVM, чтобы хранить этот массив.
 
Но!, судя по тесту, JVM держала около 128 мегабайт, когда при завершении внешнего цикла.
 
Так что я удвоил количество элементов: не количество прогонов, а количество элементов.

Код:
 
total:286 720Kb, free:147 103Kb
used? memory:139 616Kb, delta:129 782Kb
---------------------------------
Done: 23 953 time done;
---------------------------------
---------------------------------
23 953 time collected;
---------------------------------
total:276 664Kb, free:272 865Kb
used? memory:3 798Kb, delta:-6 035Kb
total:276 664Kb, free:138 537Kb
used? memory:138 126Kb, delta:128 292Kb
 

24 секунды, а ведь, должно быть 8.5*2=17
Что же Delphi?

Код:
 
Done: 29890
 

почти линейно удвоилось, 30 против 14.85. А тем временем JVM на выходе из цикла сожрала уже 276 664Kb=270 Мб.
Что же произошло?
Запустим еще раз JVM, с ключом -verbose:gc

Код:
 
>java -Xms200m -Xmx400m -Xmn300m  -verbose:gc  -jar untitled.jar 200000 20 1
 
cached sb
3 args, 20 tries
string size:36, element size:408
Press enter to start
 
Memory 387 973 120, using 200 000 elements=79 687Kb(21 % of free heap)
total:184 384Kb, free:174 549Kb
used? memory:9 834Kb
done pass in 515 (12 per 5000 el)
[GC (Allocation Failure)  163904K->19872K(184384K), 0.1618317 secs]
done pass in 594 (14 per 5000 el)
[GC (Allocation Failure)  183776K->43280K(207296K), 0.3533835 secs]
[Full GC (Allocation Failure)  43280K->43280K(207296K), 0.2921022 secs]
done pass in 1 125 (28 per 5000 el)
[GC (Allocation Failure) , 1.4949862 secs]
[Full GC (Allocation Failure)  286719K->49966K(286720K), 0.6880628 secs]
done pass in 2 641 (66 per 5000 el)
[Full GC (Allocation Failure)  213870K->76672K(267600K), 0.7981438 secs]
done pass in 1 219 (30 per 5000 el)
[Full GC (Allocation Failure)  240576K->103234K(286720K), 1.0608103 secs]
done pass in 1 515 (37 per 5000 el)
done pass in 531 (13 per 5000 el)
[Full GC (Allocation Failure)  286719K->14523K(286720K), 0.3241174 secs]
done pass in 969 (24 per 5000 el)
[GC (Allocation Failure) , 1.4938817 secs]
[Full GC (Allocation Failure)  286719K->41358K(286720K), 0.6118239 secs]
done pass in 2 563 (64 per 5000 el)
[Full GC (Allocation Failure)  205262K->67860K(286720K), 0.7302461 secs]
done pass in 1 156 (28 per 5000 el)
[Full GC (Allocation Failure)  231764K->94394K(286720K), 0.9640220 secs]
done pass in 1 406 (35 per 5000 el)
[Full GC (Allocation Failure)  258298K->121496K(286720K), 1.2126902 secs]
done pass in 1 656 (41 per 5000 el)
done pass in 532 (13 per 5000 el)
[Full GC (Allocation Failure)  286719K->14524K(286720K), 0.3204992 secs]
done pass in 984 (24 per 5000 el)
[Full GC (Allocation Failure)  178428K->41359K(286720K), 0.4725040 secs]
done pass in 906 (22 per 5000 el)
[Full GC (Allocation Failure)  205263K->67861K(286720K), 0.7336974 secs]
done pass in 1 172 (29 per 5000 el)
[Full GC (Allocation Failure)  231765K->94422K(286720K), 0.9798696 secs]
done pass in 1 422 (35 per 5000 el)
[Full GC (Allocation Failure)  258326K->121524K(286720K), 1.2060775 secs]
done pass in 1 656 (41 per 5000 el)
done pass in 532 (13 per 5000 el)
[Full GC (Allocation Failure)  286719K->14524K(286720K), 0.3246451 secs]
done pass in 968 (24 per 5000 el)
---------------------------------
total:286 720Kb, free:147 103Kb
used? memory:139 616Kb, delta:129 782Kb
---------------------------------
 

15 полных сборок, и еще 4 частичных! А было?
 
А было шесть полных и 4 частичных. Ну а по времени?
я запустил
 jstat -gkutil PID 500 10000
 и выходит, что 14.54 секунд было потрачено на сборку, из них 11 - на полную.
В случае со 100000 элементов, цифры совсем другие 4.6 / 2.6
 
Ну а какие цифры будут при 400 000 элементов, когда под данные придется отвести 280 из 400 мегабайт?

Код:
69 656 time collected;

А Delphi?

Код:
 
g:\devsoft\myprojects\lab\untitled\delphi\Win32\Release>untitled  400000 20 1 400m
Limit Memory to 400MB
Acquire priviledge:TRUE
handle:1972
Result:TRUE
Using elements:400000; Directly Allocated: 209375Kb
---------
Done in 2875; 35 per 5000 el
Done in 2922; 36 per 5000 el
Done in 2937; 36 per 5000 el
Done in 2922; 36 per 5000 el
Done in 2875; 35 per 5000 el
Done in 2875; 35 per 5000 el
Done in 2859; 35 per 5000 el
Done in 2860; 35 per 5000 el
Done in 2844; 35 per 5000 el
Done in 2843; 35 per 5000 el
Done in 2860; 35 per 5000 el
Done in 2890; 36 per 5000 el
Done in 2875; 35 per 5000 el
Done in 2907; 36 per 5000 el
Done in 2906; 36 per 5000 el
Done in 2859; 35 per 5000 el
Done in 2875; 35 per 5000 el
Done in 2860; 35 per 5000 el
Done in 2875; 35 per 5000 el
Done in 2875; 35 per 5000 el
Done in 2890; 36 per 5000 el
Done: 60500
 

60.5 секунд, против 69.6 секунд у JVM.
Delphi выигрывает там, где это и нужно: в высоконагруженных сценариях.
При этом она потребляет меньше памяти, не больше 300метров, точнее сказать затрудняюсь
При этом она работает ровнее, обработка 5000 строк занимает одно и то же время, всегда, н-р у меня 35ms, против разброса 10-70 у JVM.
То есть гарантированная отзывчивость у Delphi вдвое выше, чем JVM.

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 21:50 07-01-2015
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xpin2013

Цитата:
Интересно было бы посмотреть.
 

Там нечего смотреть, это был элементарный энумератор реализованый в виде записи с единственным полем интерфейсного типа. Ошибка была в невкорректной кодогенерации при возвращении этого энумератора функцией GetEnumerator. Я, когда выяснил причину ошибки, не стал писать в QC т.к. на XE она уже не воспроизводилась, а старые версии абракадабра не правит.
 

Цитата:
На сколько знаю в стеке только ссылка на интерфейс, а счётчик интерфейса явно за рамками стека. Или мы о других интерфейсах? Что такое интерфейсная переменная?

Порча стэка и двойная финализация это были разные примеры.
 

Цитата:
Компилятор ошибаться не может

Ты такие глупости больше никому не рассказывай, хорошо?
 

Цитата:
с аналогичной проблемой в чужом коде теперь Вы разберётесь гораздо быстрее.  

Проблема была не в коде, он был корректен, ошибка была в кодогенерации.
 
AlekXL

Цитата:
 
У тебя все примеры такие дурацкие??  

Ты убедился, что проблема фрагментации памяти не надумана? Вот и ладушки.
 

Цитата:
Другими словами, рандомные адреса, не влияют на обработку длинных в массивах(так как там все последовательно), ни на локальные переменные(то все последовательно).

Последовательно у тебя расположены ссылки, а счетчики находятся где? Вот-вот... В объектах, которые лежать могут где угодно.
 

Цитата:
программисты чаще всего ошибаются на 1 элемент, как в том случае, который ты упоминал.
Опыт, батенька  

Детский сад какой-то. А элемент массива не может быть 32 или 64 байта, нет?
 

Цитата:
Кто сказал?

Сам автор пишет, что версия экспериментальная. Если ты считаешь использование экспериментальной версии в продакшене нормальным, то говорить более не о чем.
 

Цитата:
iOs приложения тоже вынуждены работать с разными версиями iPhone, которые различаются железом.  

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

Цитата:
вот тебе и ответ. GC может быть хорош, когда памяти вдвое более требуемой.  

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

Цитата:
Второе, нужно условиться, сколько же памяти мы разрешаем JVM

Это с чего вдруг? Никаких разговоров об ограничении небыло.  
 

Цитата:
код который ты привел на оксиджене, ужасен.

Я на красоту не претендовал. Ты хотел пример, я тебе его дал.
 

Цитата:
---------
теперь по примеру.  

Ты не написал код на дельфях, который обогнал бы жабу на работе со строками. Всё что ты сделал, это загнал жабу в некомфортные условия работы. Молодец. А о том, что GC не требователен к количеству памяти никто не говорил.

Всего записей: 450 | Зарегистр. 15-02-2006 | Отправлено: 01:13 08-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av

Цитата:
Ошибка была в невкорректной кодогенерации при возвращении этого энумератора функцией GetEnumerator.


Цитата:
Цитата:  
>Компилятор ошибаться не может    
Ты такие глупости больше никому не рассказывай, хорошо?  

Компилятор ошибаться не может - это Вы ошибаетесь когда не берёте на себя ответственность за использование только что появившихся новинок языка, компонентов, алгоритмов, технологий. Это касается всего, компилятор тут ни чем не лучше он умеет только то чему успел научиться. Я использую новинки строго с изучением CPU. Иначе не пойму.
Компилятор ошибаться не может - Это не глупости это истина, когда ты начинаешь использовать его как инструмент. Ещё раз говорю интересно было бы посмотреть Ваш код, так как я не смог написать ошибочные GetEnumerator для d2010. Тут компилятор не ошибается, он только вставляет то' чему его недавно научили. Енумераторы так же как inline были бажными вплоть до XE2. Это неизвестно только Вам. Дело даже не в бажности кода. У моего товарища стояли сторонние расширения для разрисовки редактора кода и сама среда разработки падала - так как плагины разрисовки не знали енумераторы, либо ToolsAPI связанный с ними. я обернул их в добровольную директиву, а директиву запретил по дефолту. Это мне позволило сформировать демки удобоваримые для всех версий.
 
Ещё раз говорю интересно было бы посмотреть Ваш код пусть даже в ПМ. Очень люблю по изучать баги Delphi, они их фиксят по 300 штук от версии к версии, а те снова появляются.
 
Добавлено:

Цитата:
Ещё раз говорю интересно было бы посмотреть Ваш код

В замен могу предложить посмотреть мою ADH (Automatic Date's in Header and source code). Это дизайн там пакетик без компонентов, ничего лишнего. Совместимость D6-XE7 (исключение D7, не удалось победить). Что он делает? - Вставляет имя исходника, дату, автора в хидер комментария. Вставляет время в Double и TTimeStamp формате в исходник. Происходит это при нажатии Ctrl+S в Delphi. Вставка идёт не в файл, а прямо в редактор перед сохранением. Вот примерчик:
 

Код:
{*******************************************************}
{  Project                                              }
{  Original Code:  $Id: 123.pas $                       }
{  Modified:  $Date: 2015/01/07 14:44:44 $autor         }
{*******************************************************}
...
const
  sDate_123 = 42011.56789XXXXX;
 

123 - это имя модуля. для тиместамп sDate_123: TTimestamp = (xxx). В окне About у меня всегда версия основного исходника автоматом. Один минус - при выходе из Delphi иногда возникает один экзепшен, надо нажать окей. Это единственная плата за удобства. смотреть директория tools\adh, остальное не обязательно.
http://sourceforge.net/p/vdbi/home/Home/
 

Цитата:
Ещё раз говорю интересно было бы посмотреть Ваш код

Пришлите в ПМ хотя бы плиз, но лучше запостите здесь.

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 07:54 08-01-2015 | Исправлено: xpin2013, 07:59 08-01-2015
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Если GC не будет хватать памяти, ведроид тупо скинет в кэш фоновые приложения. Т.е. для пользователя вообще не имеет значения сколько свободной памяти доступно на устройстве т.к. для работы активного приложения она есть всегда.  

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

Всего записей: 1484 | Зарегистр. 24-03-2009 | Отправлено: 10:36 08-01-2015
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SuPriTo, аппаратное решение софтовых проблем - обычно самое простое и дешевое
ASUS ZenFone 2 - первый в мире смартфон с 4 ГБ ОЗУ стоимостью $199

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 11:19 08-01-2015
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
landy
1. XE не поддерживает процессоры Intel под андроид. Для меня это важно, в планах софтину писать под андроид для личного пользования.
2. Этот аппарат уже не такой дешевый в рублях из-за курса.
3. Мой текущий аппарат меня устраивает. Если что на подхвате планшет на винде.
4. Я написал предыдущее сообщение, чтобы обозначить проблему с памятью.

Всего записей: 1484 | Зарегистр. 24-03-2009 | Отправлено: 12:17 08-01-2015 | Исправлено: SuPriTo, 12:19 08-01-2015
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xpin2013

Цитата:
Компилятор ошибаться не может - это Вы ошибаетесь когда не берёте на себя ответственность за использование только что появившихся новинок языка


Цитата:
Компилятор ошибаться не может - Это не глупости это истина, когда ты начинаешь использовать его как инструмент.

OMG.
 
SuPriTo

Цитата:
При обновлении программ постоянно выскакивает не хватает памяти в устройстве. Пока не удалишь программу полностью и заново не поставишь. Кэш тоже может тупо закончится.  

Так он тебе не про ОЗУ, пишет, а про внутреннюю память. Разные же вещи.

Всего записей: 450 | Зарегистр. 15-02-2006 | Отправлено: 13:30 08-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av

Цитата:
OMG.  

Ладно, считаем за отмазку. Но в свете отмазки Ваши заявления о преимуществах GC тоже OMG, так как ещё до того как я начал просить, за подозревал, что пример, как Вы долго искали ошибку - выдуманный. Вы этим примером пытались опровергнуть моё заявление:

Цитата:
Добавлено:  
Цитата:  
>Да, он очень быстро падает.    
У дровосеков одной и той же квалификации - реже падает. Там гораздо больше экзепшенов прописано - труднее заблудиться в вариациях на тему. (xpin)  


Цитата:
Цитата:  
>труднее заблудиться в вариациях на тему.    
AV указывающий на мусор мало чем тебе поможет, а это очень распространенная ситуация. (kaz_av)  


Цитата:
Я её вылавливал несколько часов. И это мой собственнй код, который я пишу и о котором знаю всё до самой последней мелочи. (kaz_av)  

Вся история оказалась фикцией. "очень распространенная ситуация" оказалась на столько не распространённой, что автор даже замены не смог подобрать.  
 
Зы:
OMG

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 17:16 08-01-2015
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xpin2013
Просто я не вижу смысла продолжать разговор с человеком убежденным в святости компилятора.

Всего записей: 450 | Зарегистр. 15-02-2006 | Отправлено: 18:44 08-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av
Я же сказал, - Вы отмазались, бог с Вами, зачем продолжать?  
Не в святости калькулятора я убеждён, а в том что ошибки надо искать в себе, а не в бездушных творениях. А коли виновны не Вы, так приведите доказательство, чего стесняться то?
 
Добавлено:
Да наконец обидно, я тут хук IUnknown интерфейсов Delphi ToolsAPI выкладываю, чтобы показаться интересным собеседником, оказывается я недалёкий человек. А Вы хоть знаете сколь тернистый путь перехватить BorlandIDEServices, отдать вместо него свой IModuleServices, отдать свои IModule, добраться до юникодного редактора, потом вернуть все счётчики интерфейсов на место и проделать это же во всех версиях Delphi. Уж не в святости компилятора я уверен, а в безалаберности разработчиков IDE делфи и их не понимании идеологии IUnknown - то есть об интерфейсе мы не должны знать ничего.

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 19:49 08-01-2015
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xpin2013

Цитата:
Не в святости калькулятора я убеждён, а в том что ошибки надо искать в себе, а не в бездушных творениях

Код этот (библиотека большая) писался под версии 2006-по самую последнюю, которой тогда была XE. Писался на 2006, проверялся на 2009 и XE. Когда начал делать полную проверку - а библиотека обложена тестами вдоль и поперек - на 2010 обнаружился AV, который не воспроизводился ни на одной другой версии. Поиски показали, что имеется проблема в кодогенераторе, который дважды финализирует интерфейс. Т.к. смысла постить баг в QC небыло - на XE он уже не воспроизводился - был найден воркараунд и о проблеме благополучно забыли.
 

Цитата:
А коли виновны не Вы, так приведите доказательство, чего стесняться то?  

И вот теперь, спустя несколько лет, ты предлагаешь мне привести для тебя воспроизводимый пример? А ты понимаешь, что баг может элементарно не воспроизвестись на голом проекте? А понимаешь, что спустя такое количество времени, я могу просто не вспомнить всех деталей? А человеку который твердит, что комплятор ошибаться не может, я рекомендовал бы почитать QC, на предмет багов кодогенератора, но боюсь, что у кого-то треснет шаблон.
 

Цитата:
А Вы хоть знаете сколь тернистый путь...

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

Всего записей: 450 | Зарегистр. 15-02-2006 | Отправлено: 21:04 08-01-2015 | Исправлено: kaz_av, 21:08 08-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av

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

Для меня никогда ничего полезнее не было, чем забраться под самую кожу Delphi, иметь над ней абсолютную власть, взломать её не взламывая, покорить её в самое сердце (я считаю var BorlandIDEServices сердцем или сердцевиной как хотите). Я публиковал только замену дат, но я перехватывал хинты редактора, генерил их самостоятельно, много чего, в общем проверял возможности делать с ней что угодно. Так что неправильно предъявлять авторам EhLib-ов, типа "что могут ваши демонстрашные exe - что полезного в этих готовых проектах"?
 
Однако  я же заметил, а Все пропустили:

Цитата:
xpin2013
Кстати, кто не в курсе, то напоминаю - тип TDataTime легко конвертируется в Double. По сути это один и тот же тип, поддерживающий ту же арифметику на уровне процессора. Так вот прикол - обратите внимание на первую цифру перед точкой.    
'2014/12/31 11:42:28' = 42004.4878240741  
'2015/01/01 13:34:36' = 42005.5656944444    
Так понимаю через 10 дней будет 42014 - 42015, может перенесём Новый Год?  

42014 - это 10.01.2015
42015 - это 11.01.2015
Очень редчайшее совпадение. Так
52042 - это 25.06.2042 - явно под новый год не катит, хотя прошло уже 27 лет
62069 - это 10.11.2069 - тоже не новый год. и так далее.
 
А вот с 10.01.2015 по 11.01.2015 будет самый что нинаесть Бинарный Новый Год! Всех поздравляю заранее, не пропустите. Дату можно проверить следующим кодом:
 
Showmessage(DateToStr(42014.0))
 
 
 
Добавлено:
зы
Да кстати что может быть полезного, что я заметил редчайшее совпадение в компьютерной индустрии, которое не предвидится в ближайшие 50 лет, которые проживут компьютеры. Что полезного например в воздушных шариках и мыльных пузырях ? Может быть только радость от ещё одного праздника. Всем радости и веселья!!!

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 02:21 09-01-2015 | Исправлено: xpin2013, 05:48 09-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кратко о времени:
 
Timestamp к нам пришёл из UNIX. Он занимает 4 байта, 1 равна секунде, отсчёт идёт 1970 года. В FFFF:FFFF влазит около 138 лет.
TTimestamp в Delphi это 8 байт:
  TTimeStamp = record
    Time: Integer;      { Number of milliseconds since midnight } //4 byte
    Date: Integer;      { One plus number of days since 1/1/0001 } //4 byte
  end;
Так что его мы пока не отмечаем, есть ещё TSQLTimespamp (вроде около 16ти байт).
DateTime стандартный у всех, однако что касается баз данных.
В FireBird (у меня 2.5.0.26074) типа Datetime нет, есть Date и Time отдельно и есть Timestamp.
В MSSQL есть Datetime, но есть ещё и Datetime2 - более точное время с более широким диапазоном.
В Delphi 2010 появилось поле TSQLTimeStampOffsetField, выглядит оно как время плюс смещение по Гринвичу - 01.01.2011 11:22:05 +03:00.
В FAT32 время хранилось в 4х байтах, подозреваю, что это Timestamp, но в документациях пишут что это "the OS time stamp", в чём разница не поясняют. Про DOS "the OS time stamp" так же известно, что он хранится в ZIP файле и при разархивировании на NTFS из-за округлений для преобразования набегает 2 секунды. Значит, это не совсем Timestamp как у UNIX.
 
Из всех конкурентов более по душе Datetime (IMHO).

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 09:37 09-01-2015 | Исправлено: xpin2013, 09:44 09-01-2015
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xpin2013

Цитата:
Так что неправильно предъявлять авторам EhLib-ов, типа "что могут ваши демонстрашные exe - что полезного в этих готовых проектах"?

С "EhLib'ами", как раз, всё понятно. А вот полезность хрени вставляющей дату в исходник весьма сомнительна. Особенно если учесть, что сделать это можно менее черезжопным способом - используя pre-build events, которые будут работать даже при сборке из командной строки.
 

Всего записей: 450 | Зарегистр. 15-02-2006 | Отправлено: 09:54 09-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av
1) Естественно, но это же обман. Мы запоминаем дату, вставляем в файл, потом восстанавливаем. То есть дата исходника одна, а дата изменения файла другая, какая из них логичнее?  
2) pre-build events. Ну да хорошо, но он вставит дату только в тех каталогах которые ему настроят, он должен запоминать даты которые были до этого, чтобы быть эргономичнее а не перезаписывать всегда все файлы настроенных каталогов. Он ничем не поможет если я нахожусь в проекте EXE, открываю файл библиотеки package, исправляю там ошибку, и забываю про пакет. EXE будет компилиться с неверной датой в окне About. Тут я обязан прописывать каталоги, помнить кучу нюансов, что обязательно нужен билд.
3) pre-build events. Их в Delphi6 не было, но можно было назначить INotificationModue ToolsAPI. Чтобы сделать это Рей Лишнер (секреты Delphi2) предлагал класть на такую форму свой компонент, который при создании в Design-Time вешает нотификатор, но это не касается тех юнитов которые не имеют форму. Задача была одна - создать свой объект при создании любой закладки любого модуля. Стандартных способов ToolsAPI сделать такое не было даже в d2006. Хотя не то что недокументированным способом, отыскать его изучая ToolsAPI.pas практически невозможно, но GExpert умудряются встраивать свой тулбар в редактор, однако это опять же видимые компоненты как у Рея Лишнера.
4) EhLib понятен так как он уравнивает программиста со стажем 1 год с программистом со стажем 16 лет. Но должна же быть какая то инфраструктурная этика. EhLib это один инструмент, а технология позволяющая заменить любой внутренний интерфейс самой Delphi это другой инструмент, он для высшей касты как бы проще сказать. Сделать такой инструмент, свернуть горы, добраться до золотого берега, ради чего? Конечно же чтобы поправить циферку у даты немного.  
5) Что он мне дал? Разработка таких инструментов как GExpert для меня стала в 100 раз проще, то что я накручивал, я никому не даю. Код приобретал почти абсолютную независимость от версий Delphi. По технологии ничего не менялось с 2006 го года. Только благодаря ему я узнал, что внутри Delphi существуют препоны на объявленный ToolsAPI, то есть если в хидере написаны определённые последовательности символов, то объявленный интерфейс для чтения исходника останавливается на них и ничего больше не возвращает. Приходилось схитрить. Мне открылся особенный мир не доступный тем кто не писал GExpert или подобный проект.
 
В итоге - мой инструментик весьма простенький 3 pas файлика, одно отличие - Вы редактируете не компонент а исходник. Конкретно Вас kaz_av, я не призываю писать инструменты ToolsAPI, но про pre-builds не пишите пожалуйста, я рассматривал и такие варианты, но все они были ужасны, гораздо ужаснее чем Ctrl+S.
 

Цитата:
А вот полезность хрени вставляющей дату в исходник весьма сомнительна.

Я вот сравнительно уже стар. У нас программисты отмечают свои версии последней цифрой билда. Я с трудом понимаю как они запоминают что было в 124 а что было в 136 билде. Но они же это для чего-то делают, типа мне сказали ошибку я спросил билд и понял что ошибка была исправлена позже. Я вот хочу посмотреть на них когда 2.9.5.124 сменится 3.0.0.136, потом 3.0.1.. 3.0.15, 3.1.0..3.1.4, 3.2.0 и так далее. Я уже обычно не помню чем отличается 3.1 от 3.1.3. Когда мне говорят вместо версии дату моего исходника, который я записывал и смотрел чтобы там в датах не было цифры 666, я конечно сразу вспоминаю, ага это до, а это после. То есть для меня это без сомнений полезная хрень... Закроем.
 
Я напоминаю - Вы же отмазались. То что:
 

Цитата:
Поиски показали, что имеется проблема в кодогенераторе, который дважды финализирует интерфейс. Т.к. смысла постить баг в QC не было - на XE он уже не воспроизводился - был найден воркараунд и о проблеме благополучно забыли.  
И вот теперь, спустя несколько лет, ты предлагаешь мне привести для тебя воспроизводимый пример? А ты понимаешь, что баг может элементарно не воспроизвестись на голом проекте? А понимаешь, что спустя такое количество времени, я могу просто не вспомнить всех деталей?

 
Это никак не вяжется с Вашим же утверждением о том, что такие случаи сплошь и рядом и они происходят чаще чем в средах которые используют GC. Вы же сказали - случай распространённый, я Вас за язык не тянул. Теперь Вы боитесь что мол на голом проекте кодогенератор текст исходника поймёт по другому, чем тот же текст но не на голом проекте, тут что-то у меня вообще не укладывается. Все Ваши объекты не на голом проекте появляются только после того как кодогенератор (win32/win64) отработает и выдаст программу, как они у Вас связаны? Это же не дотнет! Просто приходится наблюдать много мути, ничего доказывающего, что Ваш случай по Вашим словам распространённый. В каком месте?
 

Код:
 
  SUPPORTS_INLINE                Compiler supports the inline directive (D9+/FPC)
  SUPPORTS_FOR_IN                Compiler supports for in loops (D9+)
  SUPPORTS_GENERICS              Compiler supports generic implementations (D11.NET, D12+)

D9 - это 2005
D12 - это 2009
Вы бы в своём примере на 2010 использовали бы генерики лучше. По слухам с QC генерики исправляли от багов даже во времена XE3.
 
Историческая справка
TWideStringField появился в D7, но не работал. В D2005 он тоже не работал. В D2006 и D2007 он работает, но нет элементов редактирования показывающих Wide а не Ansi. В D2009 появляется юникод. В D2010 мы уже видим правильные буквы. D7 доросла  до D2010. А Вы, в 2005 появились енумераторы в 2006 их используете и жалуетесь на распространённость недопонимания Вас компилятором. Мне уже нечего добавить к этому "РАСПРОСТРАНЁННОМУ" случаю предлагаю закрыть.
 


Предлагаю продолжить про ещё один Новый Год. Хорошо это или нет друзья?
Showmessage(DateToStr(42014)) = 10.01.2015
Showmessage(DateToStr(42015)) = 11.01.2015
Кто может подсчитать, когда будет такое же совпадение с новым годом? Допускается сдвиг не более десяти дней. Сколько пройдёт столетий или тысячелетий до такого же случая?

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 11:21 09-01-2015
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av

Цитата:
Ты убедился, что
Цитата:
Цитата:
Это 5 процентов овехеда -- чудовищное замедление?
 
Из ничего - не то слово.  

проблема фрагментации памяти не надумана? Вот и ладушки.  

нет, не убедился. Пример не показателен.

Цитата:
Последовательно у тебя расположены ссылки, а счетчики находятся где? Вот-вот... В объектах, которые лежать могут где угодно.  

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

Цитата:
Детский сад какой-то. А элемент массива не может быть 32 или 64 байта, нет?  

Могут. И я выделяю буфер как раз такой, чтобы в него помещалось на 1-2 элемента более заявленного . Но , поскольку буферы обычно выделяются под строки, я и упомянул 1-2 байта.  
Все остальное твои придирки.

Цитата:
Сам автор пишет, что версия экспериментальная. Если ты считаешь использование экспериментальной версии в продакшене нормальным, то говорить более не о чем.  
Любой новый код является экспериментальным
Когда я пишу свой код, то он является куда менее стабильным , чем код, опубликованный в сети, и которым пользуются десятки или сотни разработчиков.
 
Во включении чужого полезного кода нет никакой проблемы, если умеешь править чужие исходники. Это лучше, чем изобретать велосипед.
 
И вполне нормально использовать его в "продакшене", когда это нужно. Мне не свойственна эта боязливость.
 
Для людей, думающих  как ты, "как бы чего не вышло", -- да, managed код привлекателен. Но мне это кажется недостатком профессионализма и мужества.
 

Цитата:
Только iOS пилиться именно под это конкретное железо, а ведроид работает вообще на любой ноунеймовой китайщине. Разница немного очевидна, не считаешь?  

ладно, это вопрос веры, что тормозит Андроид: кривая поддержка железа или Dalvik. Я думаю, что именно Dalvik, поскольку над поддержкой железа работают многоопытные сишники-линуксоиды.
Тем не менее примеров, где managed код работает хуже натива, предостаточно.
 

Цитата:
Цитата:
Это 5 процентов овехеда -- чудовищное замедление?
 
Из ничего - не то слово

Я показал уже, что JVM на строках, даже когда "обгоняет" Delphi, половину процессорного времени, и половину RAM выделяет под нужды GC.
5 процентов оверхеда из-за кривого использования ARC -- это много,"не то слово",
а 50 процентов всех ресурсов на GC -- это ерунда?

Цитата:
Цитата:
вот тебе и ответ. GC может быть хорош, когда памяти вдвое более требуемой.  
 
Нет не ответ. Если GC не будет хватать памяти, ведроид тупо скинет в кэш фоновые приложения. Т.е. для пользователя вообще не имеет значения сколько свободной памяти доступно на устройстве т.к. для работы активного приложения она есть всегда.  

Сбрасывать в кэш? То есть будет свопиться.. Ну, мы знаем, что это такое.
А если одному приложению потребуется почти вся, 60-70 процентов, свободная память, что будет? А вот что: перманентный GC, из-за не освобожденной вовремя памяти.
Так ли хорош GC, когда памяти не вдвое более требуемой?

Цитата:
 
Это с чего вдруг? Никаких разговоров об ограничении небыло
 
Память конечна. А сравнение должно проводится в равных условиях.  
 
Или ты думал, что я забился с тобой на пацанский спор? Может, еще и кирпичи купить мне предложишь?

Цитата:
Ты не написал код на дельфях, который обогнал бы жабу на работе со строками. Всё что ты сделал, это загнал жабу в некомфортные условия работы. Молодец.  
Некомфортные условия работы -- это значит, справедливые и равные, в твоем понимании?
Может, запустим яву на i7, а Delphi выделим 4-й пенек?
А ведь Delphi приложение однопоточное, давай еще выделим JVM только одно ядро. Что мы получим, догадываешься? Или тебя ткнуть носом?
 
Да, ява быстрее Delphi на строках..  
..при  двукратном превосходстве ресурсов как по памяти, так и, верояно, по процессору .
Я выделил то, что было мелким шрифтом, всего то лишь.
При всем этом она все равно минимум в два раза уступает Delphi по отзывчивости, я наглядно показал на предложенном тобой примере.

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 11:51 09-01-2015 | Исправлено: AlekXL, 11:51 09-01-2015
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xpin2013
Я весь твой поток сознания комментировать не осилю, потому выборочно:

Цитата:
Естественно, но это же обман. Мы запоминаем дату, вставляем в файл, потом восстанавливаем. То есть дата исходника одна, а дата изменения файла другая, какая из них логичнее?

Пишешь в своем исходнике {$I blah_blah_last_modified_datetime.inc}, настраиваешь событие на генерацию соответствующего файла. Всё.
 

Цитата:
pre-build events. Их в Delphi6 не было

Кто в 2015 использует D6 тот сам себе злобный буратино. Некрофилы должны страдать.
 

Цитата:
Я с трудом понимаю как они запоминают что было в 124 а что было в 136 билде.

Им VCS помогает.
 

Цитата:
Это никак не вяжется с Вашим же утверждением о том, что такие случаи сплошь и рядом и они происходят чаще чем в средах которые используют GC

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

Цитата:
А Вы, в 2005 появились енумераторы в 2006 их используете и жалуетесь на распространённость недопонимания Вас компилятором

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

Всего записей: 450 | Зарегистр. 15-02-2006 | Отправлено: 12:04 09-01-2015
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av

Цитата:
Цитата:
там умудренный джавист два часа распинался, как борясь с языком и парадигмой GC
 
А он там не рассказал, чего они не взяли нативные плюсы?

Обычная мантра: C++ сложен, нужна огромная команда, "жесточайшая" дисциплина, а критичное по производительности ядро  -- лишь небольшая часть продукта: обвязку  легче делать на Java.  
 
Про C++  во многом правда, но Delphi они даже не рассматривали, вероятно. Ибо  не владели.
 

Цитата:
А о том, что GC не требователен к количеству памяти никто не говорил.
Вот в этом и соль.. Никто, особенно, доднетчики и джависты не говорят, что GC генерит жуткий оверхед.
Ты сам мне брался утверждать, что GC на твоих примерах GC забирает "доли процента" процессорного времени.  
Но на примере, данном тобой же, я доказал что GC сжирает половину времени , в лучшем случае
Вот это и проблема, ты распространяешь ложь

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 12:07 09-01-2015
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlekXL

Цитата:
..при  двукратном превосходстве ресурсов

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

Цитата:
Обычная мантра: C++ сложен, нужна огромная команда, "жесточайшая" дисциплина

Т.е. когда он говорит о переписывании GC, он умудренный опытом джавист. А когда говорит о проблеме с нативом то это мантра

Всего записей: 450 | Зарегистр. 15-02-2006 | Отправлено: 12:09 09-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
52042 - это 25.06.2042 - не новый год!
62069 - это 10.11.2069 - не новый год!
72097 - это 22.05.2097 - не новый год!
82124 - это 04.11.2124 - не новый год!
92152 - это 19.04.2152 - не новый год!
102179 - это 02.10.2179 - не новый год!
поздравляю, начиная с нашего дня мы перешли рубеж Timestamp (~138 лет)
112207 - это 18.03.2207 - не новый год!
122234 - это 30.08.2234 - не новый год!
прошло более двух столетий, такой же случай не повторился.
132262 - это 12.02.2262 - не новый год!
142289 - это 27.07.2289 - не новый год!
152317 - это 10.01.2317 - не новый год!
 
Такого же совпадения как с 10-го по 11-ое не предвидится ближайшие 300 лет. Программу расчёта можете написать сами, но цифра 300 уже поражает воображение.
 
У кого будут предложения как назвать этот Новый Год. Я пока называю бинарный - туго у меня с воображением. Как будет правильнее?

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 12:16 09-01-2015 | Исправлено: xpin2013, 12:18 09-01-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru