Татарин>> Это очень интересная теория и хорошо работающая фантазия, но... во-первых, она никак не стыкуется с практикой.
yacc> Как раз стыкуется.
Не-а.
Не пытайся выдумывать факты в подтверждение своей выдумки.
Более 90% строковых операций по времени - копирование и сравнение.
Да-да, именно так. Для остальных операций не имеет значения размер регистра, в котором выполняется операция: байт в 64-битном или 48-битном регистре смотрится "очень свободненько"
, но если уже есть АЛУ на полную разрядность регистра, в процессоре операция над байтом занимает ровно столько же, сколько операция над 48 или 64-бит числом. НИКАКОГО выигрыша для "байтовых" машин тут нет. Я б даже посоветовал тебе попробовать самому, но на х86 ты сейчас можешь получить даже парадоксальный результат, когда
одиночные байтовые инструкции будут
медленней, чем операции над словами.
А вот преимущества копирования или сравнения с большими словами никуда не исчезают.
Ты просто не имел дело с этим на низком уровне (ну или никогда не требовалось скорости).
[показать]PGRpdiBjbGFzcz0icm91bmRfYm94IHNoYWRvdzggbXRvcDgiPgo8ZGl2IGNsYXNzPSJyc19ib3hfbmQgZmxvYXRfbGVmdCBtdG9wOCIgc3R5bGU9IndpZHRoOjIwMHB4OyBoZWlnaHQ6MTUwcHg7Ij48IS0tY29tbW9uOjE0OC0tPjxpbWcgc3JjPSJodHRwczovLzIwMHgxNTAuc3QuY2cuYTB6LnJ1L2FIUjBjSE02THk5b1lXSnlMbU52YlM5eWRTOWhjblJwWTJ4bGN5ODBOamMyT1Rrdi5qcGciIHdpZHRoPSIyMDAiIGhlaWdodD0iMTUwIiBhbHQ9IiIgY2xhc3M9Im1haW4iPjwvZGl2PgoKCjxoMz48YSBocmVmPSJodHRwczovL2hhYnIuY29tL3J1L2FydGljbGVzLzQ2NzY5OS8iIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJleHRlcm5hbCBmb28tYTUiPtCa0LDQuiDQvdC1INGB0LTQtdC70LDRgtGMINGB0LDQvNGL0Lkg0LHRi9GB0YLRgNGL0Lkgc3RybGVuINC4INC90LDQudGC0Lgg0L3QtdC00L7RgNCw0LHQvtGC0LrRgyDQsiBWaXN1YWwgU3R1ZGlvIDIwMTkgQ29tbXVuaXR5PC9hPjwvaDM+CgrQndCwINGA0LDQt9C80YvRiNC70LXQvdC40Y8g0LzQtdC90Y8g0L3QsNGC0L7Qu9C60L3Rg9C70LAg0YHRgtCw0YLRjNGPINC+0LEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LggwqvRgdGC0YDQsNC90L3QvtC5wrsg0LjQvdGB0YLRgNGD0LrRhtC40LggcG9wY291bnQg0LIg0YHQvtCy0YDQtdC80LXQvdC90YvRhSDQv9GA0L7RhtC10YHRgdC+0YDQsNGFIC4g0KDQtdGH0Ywg0L/QvtC50LTQtdGCINC90LUg0L4g0L/QvtC00YHRh9C10YLQtSDRh9C40YHQu9CwINC10LTQuNC90LjRh9C10LosINCwINC+0LEg0L7QsdC90LDRgNGD0LbQtdC90LjQuCDQv9GA0LjQt9C90LDQutCwINC+0LrQvtC90YfQsNC90LjRjyDQodC4Li4uCgo8c3BhbiBjbGFzcz0idHJhbnNncmF5Ij4gPHNtYWxsPi8vJm5ic3A7IDxhIGhyZWY9Imh0dHBzOi8vaGFici5jb20vcnUvYXJ0aWNsZXMvNDY3Njk5LyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImV4dGVybmFsIGZvby1hNSI+aGFici5jb208L2E+PC9zbWFsbD4gPC9zcGFuPiAKPGRpdiBjbGFzcz0iY2xlYXIiPiZuYnNwOzwvZGl2PjwvZGl2Pgo8YnIgLz4K0KLQsNCx0LvQuNGG0LAgMSDigJMg0LLRgNC10LzRjyDRgNCw0LHQvtGC0Ysg0LHQtdC90YfQsCBzdHJsZW4g0LIg0YHQtdC60YPQvdC00LDRhSAoTVMgVlMgMjAxOSBjb21tdW5pdHksIEMrKyBjbCB2ZXJzaW9uOiAxOS4yMi4yNzkwNSk8YnIgLz4K0JHQvtC70YzRiNC+0Lkg0LHQu9C+0LosIDFLCdCR0L7Qu9GM0YjQvtC5INCx0LvQvtC6LCAxSywgKtCy0YvQt9C+0LIgc3RybGVuCdCc0LDQu9GL0Lkg0LHQu9C+0LosIDEwINGN0LvQtdC80LXQvdGC0L7QsgnQnNCw0LvRi9C5INCx0LvQvtC6LCAxMCDRjdC70LXQvNC10L3RgtC+0LIsICrQstGL0LfQvtCyIHN0cmxlbjxiciAvPgpEZWJ1ZywgeDg2CTcuMjUJNy4yNQkzLjA2CTMuMDY8YnIgLz4KUmVsZWFzZSwgeDg2CTkuMAkzLjkJMC4xNQkwLjEyPGJyIC8+CkRlYnVnLCB4NjQJNi4wCTYuMAkzLjQJMy40PGJyIC8+ClJlbGVhc2UsIHg2NAk4LjUJMi4zCTAuMTUJMC4xMQ==
Остаётся только выборка, а этот вопрос решается введением 2 (прописью двух) операций записи/чтения в память (ну или 6, если чуть полнее и, оглядываясь на 21164 BWX вводить заодно и операции 16-бит + кое-какой "сахар").
yacc> Я тебе больше скажу - в конце 90-х у нас в конторе даже была плата с DEC Alpha.
yacc> И мы тестили ее как раз на работе типовых "планово-экономических" задач - т.е. SQL Server 6.5 для бухгалтерии - со строковыми операциями и фиксированной точкой.
yacc> Выигрыша там вообще не было.
Ну, я не знаю, что с чем и на чём вы сравнивали...
НЯП, как раз SQL-то там долгое время бежал в режиме эмуляции х86, как и многие программы МС (даже в поставке винды). У меня смутные воспоминания, что до полного порта SQL на Альфу так и не доехало, там была вполне годная альтернатива под OpenVMS, и даже само по себе решение с ВинНТ проигрывала на Alpha (что-то там было с вводом выводом), а уж говорить о сравнении нативного с эмуляцией и вовсе бессмысленно.
yacc> Если на БЭСМ делать подпрограммы, а на Минск использовать готовые команды процессора то быстродействие будет таким же.
Любая строковая операция будет подпрограммой, что на БЭСМ, что на Минске - не писать же каждый раз одинаковый код?!
И, конечно, быстродействие БЭСМ будет выше и Минска и ЕС просто из-за бОльшей разрядности шины (бОльшего числа сравнений/пересылок символов на операцию) и бОльшего числа операций в секунду.
То есть, свои "аргументы" ты уже просто откровенно сосёшь из пальца, причём, даже не обращая внимания, что они прямо противоречат всем известной практике.
Ну, а практику - см. даже на примере х86. Спорим, на одном и том же процессоре мой 64-разрядный "безбайтовый" код на обработке реальных строк, без синтетики, будет быстрее, чем твой с байтовыми операциями?