LINUX.ORG.RU

[депрессия]а каким будет размер dword в 128бит?

 


0

0

недавно узнал что операции 1 и 3 будут занимать разное время:

0: char* data=(char*)malloc(20);
1: ((unsigned int*)data)[0]=1;
2: data++;
3: ((unsigned int*)data)[0]=1;

по причине того что после data++ указатель перестанет быть выравнен по dword и процессору будет плохо. и вообще, что часть процессоров (не i386 которые) не смогут исполнить эту операцию.

вобщем много думал, опустились руки и начал депрессовать (поскольку в качестве хобби пытаюсь писать на С/С++ достаточно большой блок кода и там идёт активная работа с байтами и хранением их на диске и война за каждый байт и за скорость).

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

вобщем даже не знаю что делать.

вдоль и забухать - не предлагать. )

★★★

Вот что бывает с мальчиками, которые прогуливали семинары по ассемблеру. А ведь прав был дядька Кнут с МИКСом. Прав. Но кто его слушал..

bibi
()

> начал депрессовать

в качестве хобби

Серьезное отношение к хобби,

если я даже выравнюю по 32бита всё то всё равно это с большой вероятностью хрен куда перенесёшь.

вобщем даже не знаю что делать.

Преобразование после чтения, преобразование перед записью, фархитектурно-зависимый in-memory формат.

tailgunner ★★★★★
()

Предлагаю вам испольновать современные высокоуровневые языки программирования — единственный их представитель Java

wfrr ★★☆
()
Ответ на: комментарий от bibi

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

vahvarh ★★★
() автор топика
Ответ на: комментарий от tailgunner

нет, это определённый в процессоре для работы с памятью на уровне шины. весь вопрос-то не в операционке а в шине.

vahvarh ★★★
() автор топика

а почему размер dword должен измениться?

По теме: вещества?

madcore ★★★★★
()
Ответ на: комментарий от vahvarh

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

Вообще брось ты всю эту мутотень с размерами. Осел сдохнет. Уже очень скоро все целочисленные - любые - будут сугубо 128 бит. Везде. И проблема отпадёт сама собой как класс.

bibi
()
Ответ на: комментарий от vahvarh

> нет. это определённый в процессоре для работы с памятью на уровне шины.

Что «нет»? Причем тут шина? По-твоему, на 386 и 386SX был разный размер слова? Рахмер слова == размеру регистра общего назначения. То, что M$ тащит typedef DWORD из Windows 1.0 - проблемы M$ (и, увы, тех, кто учился программировать в венде).

tailgunner ★★★★★
()
Ответ на: Белка и жаба - братья навек! от ist76

Белка и жаба - братья навек!

Как бы двусмысленно это не звучало

Белку гложет жаба. Жаба белку ест. Ведь все признаки - налицо. И пентакс и все такое. Белка === жаба.

bibi
()
Ответ на: комментарий от tailgunner

вообще-то я тестирую это на линуксе, если чё так ) x86_64.

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
	char *datasrc;
	int max=50*1000*1000;
	datasrc=(char*)malloc(max*4+10);
	int i,j;
	for (j=0;j!=20;j++) {
		char *data=datasrc;
		for (i=0;i!=max;i++) {
			((unsigned int*)data)[0]=i;
			data+=4;
		}
	}

}
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
	char *datasrc;
	int max=50*1000*1000;
	datasrc=(char*)malloc(max*4+10);
	int i,j;
	for (j=0;j!=20;j++) {
		char *data=datasrc;
                data++;
		for (i=0;i!=max;i++) {
			((unsigned int*)data)[0]=i;
			data+=4;
		}
	}

}
vahvarh ★★★
() автор топика
Ответ на: комментарий от wfrr

> Чем больше тормоза - тем меньше тормозной путь.
Ты забыл про томми, который убил себя об стену, потому что жаба не успела дать команду затормозить, будучи занятой garbage collector? )))

vahvarh ★★★
() автор топика
Ответ на: комментарий от vahvarh

> вообще-то я тестирую это на линуксе, если чё так ) x86_64.

Приведенный код системно-независим, и DWORD в нем не упоминается. На вопрос, что делать с выравниванием (ипорядком байт, кстати), я уже ответил.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Что «нет»? Причем тут шина?

сделай printf(«%d\n»,sizeof(unsigned int)); на amd64, с линуксом amd64 и посмотри что будет.

vahvarh ★★★
() автор топика
Ответ на: комментарий от tailgunner

не суть важно что это доказывает.

объясни почему результаты по скорости разные и скажи какой align будет у 128бит.

vahvarh ★★★
() автор топика
Ответ на: комментарий от vahvarh

>объясни почему результаты по скорости разные и скажи какой align будет у 128бит.

Как повезет.

madcore ★★★★★
()
Ответ на: комментарий от vahvarh

объясни почему результаты по скорости разные и скажи какой align будет у 128бит.

Ты сперва спецификацию дай на конкретную архитектуру 128ми бит. Там и посмотрим, что родил человечий разум. А так то - ну что гадать на ровном месте? Как появится там и будет видно, что к чему.

bibi
()
Ответ на: комментарий от wfrr

Извольте, это самый современный самый высокоуровневый самый язык самого программирования.

Не понял. А почему тогда весь софт вокруг куда не посмотри - сплошные плюсы?

bibi
()
Ответ на: комментарий от wfrr

Попробуйте выбраться из мусорки и посмотреть на мир вокруг.

Мельчаешь. Тоньше, тоньше. Это линуксфоревер может позволить себе закатывать истерики по поводу и без. Ему простительно. Но у тебя то левелап и не один.

bibi
()
Ответ на: комментарий от wfrr

>Извольте, это самый современный самый высокоуровневый самый язык самого программирования.

Высокоуровневый? Со статической типизацией? Белкам насмех!

kranky ★★★★★
()
Ответ на: комментарий от bibi

Вы не смогли, таки, конечно, и не стоит, ибо там дует ветер перемен.

wfrr ★★☆
()
Ответ на: комментарий от kranky

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

wfrr ★★☆
()
Ответ на: комментарий от vahvarh

> объясни почему результаты по скорости разные

Потому что к выровненным данным обращение быстрее.

и скажи какой align будет у 128бит.

На будущей 128-бит архитектуре? Не знаю точно. 128 бит или 64, если совместимость сочтут веской причиной.

tailgunner ★★★★★
()

Все быдлокодеры знают что есть инструменты для скоростного быдлокодинга, а есть для тормозного быдлокодинга. (А нормальные люди не быдлокодят какие бы инструменты не использовали)

kranky ★★★★★
()
Ответ на: комментарий от kranky

> Все быдлокодеры знают что есть инструменты для скоростного быдлокодинга, а есть для тормозного быдлокодинга

В фортунки.

tailgunner ★★★★★
()
Ответ на: комментарий от wfrr

Ну вот я с Вами поделился своей мудростью, а Вы вашей глупостью.

Соотношение размера головы к телу у белки действительно в пользу головы. Что, возможно, даёт некоторым инстансам данного класса повод утверждать, что они мудры. Ибо много. Относительно.

bibi
()

Эээ.. это не ты пишешь СУБД которая заткнет оракл за пояс? Оракл может быть спокоен :)

alexru ★★★★
()
Ответ на: комментарий от bibi

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

wfrr ★★☆
()

что часть процессоров (не i386 которые) не смогут исполнить эту операцию.

Большинство процессоров на которых запустятся десктопные ОС эту операцию выполнить смогут.

И по теме - виноват не процессор, виноват способ доступа памяти.

alexru ★★★★
()

> депрессия

А я вас сейчас вообще до суицида доведу. Смотрите-ка: скорость доступа к памяти также сильно зависит от того, присутствует ли cache line в кеше или нет. На SMP системах вообще веселуха, ведь изменения, которые существует только в кеше процессора, нужно синхронизировать с кешами других процессоров, когда они обращаются к этим данным. Поэтому если несколько процессоров будут постоянно обращаться к одному cache line, то падение скорости будет очень существенным. Кстати, TLB промахи тоже очень дорого обходятся, поэтому при частых сменах контекста скорость доступа к памяти будет медленнее. Если вы после этого не повесились, могу еще что-нибудь страшное рассказать. :)

Relan ★★★★★
()
Ответ на: комментарий от Relan

> могу еще что-нибудь страшное рассказать. :)

Да просто дай ссылку на статьи Дреппера.

tailgunner ★★★★★
()
Ответ на: комментарий от vahvarh

>amd64 - dword=32бита (что забавно)

На логику названия давной уже забили.

KRoN73 ★★★★★
()
Ответ на: комментарий от wfrr

>Можно еще рассказть что в Java в принципе невозможен Singleton.

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

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Ну хотябы потому, что корректная реализация мультипоточного синглетона с отложенной загрузкой делается через одно место и не 100% что никогда не глюкнет. Но как только у нас получается что синглетон будет загружен разными ClassLoader он перестает быть одиночкой, его становится двое 8) и т.п.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

>Ну хотябы потому, что корректная реализация мультипоточного синглетона с отложенной загрузкой делается через одно место и не 100% что никогда не глюкнет.

Странно. Нам хватало банальных static + synchronized :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Это по принципу, шойто написал, и вроде как работает, да?

http://java.sun.com/developer/technicalArticles/Programming/singletons/

http://www.ibm.com/developerworks/java/library/j-dcl.html

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

wfrr ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.