Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 14:15
Оценка: 14 (3) +1
Вот тут утилитка (только для Visual Studio) которая собиарет информацию о классах.
Затускать в $(OutDir) (которых если ничего не менять обычно две Debug и Release) уже после того как проект собран
Выводит кучу информации, так что лучше сразу делать редирект в файл. (например так Serialization.exe > metadata.txt)
Насколько я понял (гы-гы) выводит информацию только об используемых (но не объявленных) классах. Так что если класс объявлен, но не используется его в выводе скорее всего не будет.

Меня интересуют
  1. Глючность Баг-репорты приветствуются
  2. Скорость (в виде [объём исходников в мегабайтах]/[скорость работы в секундах] и [количество UDT]/[скорость работы в секундах]).
  3. Может ли кто-либо создать что-либо аналогичное по параметрам (Объём информации/скорость работы) для CGG/MinGW?


27.01.05 07:44: Перенесено модератором из 'C/C++' — Павел Кузнецов
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Проект сериализации - 2 [просьба высказаться]
От: uw  
Дата: 08.01.05 14:46
Оценка: 30 (1)
Здравствуйте, adontz, Вы писали:

A>Меня интересуют

A>

    A>
  1. Глючность Баг-репорты приветствуются
    A>
  2. Скорость (в виде [объём исходников в мегабайтах]/[скорость работы в секундах] и [количество UDT]/[скорость работы в секундах]).
    A>
  3. Может ли кто-либо создать что-либо аналогичное по параметрам (Объём информации/скорость работы) для CGG/MinGW?
    A>
1. Глючность высока.
// ppp.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
class A
{
public:
    A()
    {
        _tprintf(_T("A\n"));
        a = b = c = 0;
    }
    int a,b,c; 
};

class B : public A
{
public:
    B() : A()
    {
        _tprintf(_T("B\n"));
    }
    int d;
};

template <class T>
class Foo
{
public:
    Foo()
    {
        _tprintf(_T("X\n"));
    }
    T z;
};
int _tmain(int argc, _TCHAR* argv[])
{
    A a;
    B b;
    Foo<A> foo1;
    Foo<B> foo2;
    return 0;
}


Результат:

312 User defined types (UDT) found
User Defined Type [A::a::b::c::a::b::c::a::b::c::a::b::c] of kind [class]
{
DATA [a] of type [signed int] of kind [field] with access [public]
DATA [b] of type [signed int] of kind [field] with access [public]
DATA [c] of type [signed int] of kind [field] with access [public]
DATA [a] of type [signed int] of kind [field] with access [public]
DATA [b] of type [signed int] of kind [field] with access [public]
DATA [c] of type [signed int] of kind [field] with access [public]
DATA [a] of type [signed int] of kind [field] with access [public]
DATA [b] of type [signed int] of kind [field] with access [public]
DATA [c] of type [signed int] of kind [field] with access [public]
DATA [a] of type [signed int] of kind [field] with access [public]
DATA [b] of type [signed int] of kind [field] with access [public]
DATA [c] of type [signed int] of kind [field] with access [public]
}
User Defined Type [B::d::d::d::d] of kind [class]
{
DATA [d] of type [signed int] of kind [field] with access [public]
DATA [d] of type [signed int] of kind [field] with access [public]
DATA [d] of type [signed int] of kind [field] with access [public]
DATA [d] of type [signed int] of kind [field] with access [public]
}
User Defined Type [Foo<A>::z::z::z::z] of kind [class]
{
DATA [z] of type [A] of kind [field] with access [public]
DATA [z] of type [A] of kind [field] with access [public]
DATA [z] of type [A] of kind [field] with access [public]
DATA [z] of type [A] of kind [field] with access [public]
}
User Defined Type [Foo<B>::z::z::z::z] of kind [class]
{
DATA [z] of type [B] of kind [field] with access [public]
DATA [z] of type [B] of kind [field] with access [public]
DATA [z] of type [B] of kind [field] with access [public]
DATA [z] of type [B] of kind [field] with access [public]
}


3. Да уже есть что-то подобное.
Re: Проект сериализации - 2 [просьба высказаться]
От: Dmitry A. Sinyagin www.astawireless.com
Дата: 08.01.05 18:30
Оценка: 30 (1)
для начала:

required files not found


дальше:

User Defined Type [wlib::helper_lock] of kind [class]
{
[NO ENUM]
DATA [m_lock] of type [] of kind [field] with access [private]
DATA [m_bCondition] of type [bool] of kind [field] with access [private]
FUNCTION [helper_lock] of kind [method] with access [public]
FUNCTION [~helper_lock] of kind [method] with access [public]
FUNCTION [condition] of kind [method] with access [public]
FUNCTION [iterate] of kind [method] with access [public]
FUNCTION [__vecDelDtor] of kind [method] with access [public]
[NO UDT]
}

__vecDelDtor — здесь выглядит странно, хотя всем понято что это такое
m_lock — имеет тип Mutex&, почему он не определяется ? или это by design

и вообще сам класс из себя представляет вот что
class helper_lock{
public:
    helper_lock(Mutex& locker) : m_lock(locker){
        m_lock.lock();
    }
    ~helper_lock(){
        m_lock.unlock();
    }
    
    bool condition() { return m_bCondition; }
    void iterate() { m_bCondition = false; }
private:
    Mutex&    m_lock;
    bool m_bCondition;
};


а вообще задумка чудесная. если потом в исходниках появится, то с радостью воспользуюсь для своих нужд
зы. про скорость. на процессере P-M 1400 1.5 метра исходников он пережевал за время 00:00:00.941
Re: Проект сериализации - 2 [просьба высказаться]
От: SleepyDrago Украина  
Дата: 08.01.05 21:00
Оценка: +1
Здравствуйте, adontz, Вы писали:

A>Вот тут утилитка (только для Visual Studio) которая собиарет информацию о классах.

A>Затускать в $(OutDir) (которых если ничего не менять обычно две Debug и Release) уже после того как проект собран

Работает
Осталось отфильтровать 99.999% типов из pdb и все будет путем
Насколько я понял ее принцип работы похож на tracewpp из Platform Sdk.
те через DIA получаем все содержимое pdb.

Вопрос по интерфейсу утилиты: надо спрашивать какой pdb брать тк если в проекте несколько модулей и они все кладут свои бинарники и pdb в один каталог (например "bin") то что?

на счет проекта в целом.
Взгляните на 44ю презентацию на КРИ 2004
там для проблемы большого количества данных и модификации схемы использован достаточно специфичный подход. Схема на внешнем языке тк данные важнее чем код.

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

И еще. всегда нужен путь для тех кто может "сделать все сам" а не черный ящик.

wbr
Re: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 14:22
Оценка:
Здравствуйте, adontz, Вы писали:

А сам файл я забыл
http://www.rsdn.ru/File/2053/Serialization.rar
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 18:08
Оценка:
Здравствуйте, uw, Вы писали:

uw>1. Глючность высока.


Спасибо! Исправил. URL тот-же
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 18:59
Оценка:
Здравствуйте, Dmitry A. Sinyagin, Вы писали:

DAS>required files not found

fixed.

DAS>__vecDelDtor — здесь выглядит странно, хотя всем понято что это такое


Могу выкидывать функции начинающиеся на два подчерка Как-то стабильно отделять функции сгенерированные компилятором от определённых пользователем пока не удаётся.

DAS>m_lock — имеет тип Mutex&, почему он не определяется ? или это by design


Это глюк Исправил. Теперь указатели и ссылки, а так же модификаторы const и volatile определяются правильно. Если тип ссылка или указатель после имени добавляется & или * соотетственно. Модификаторы const и volatile добавляются до имени типа.

DAS>а вообще задумка чудесная. если потом в исходниках появится, то с радостью воспользуюсь для своих нужд


Вообще конечно появиться. Я просто с лицензированием пока не определился. С одной стороны не хочу ограничивать коммерческое использование, с другой хочу надёжно защитить авторское право. Понятно что в текущих 30Кб особо защищать нечего, но я думаю заниматься автогенерацией исходников содержащих код сериализации и возможно структуры с метаинформацией. Думаю сделать так же стандартный вывод в XML для удобного подключения внешних утилит.

Кроме того неявно используемые элементы (value_type, iterator, rebind) не обрабатываются (опять таки потому что основная цель — сериализация).

DAS>зы. про скорость. на процессере P-M 1400 1.5 метра исходников он пережевал за время 00:00:00.941

Меньше секунды? Чудесно!
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Проект сериализации - 2 [просьба высказаться]
От: yxiie Украина www.enkord.com
Дата: 08.01.05 19:21
Оценка:
Здравствуйте, adontz, Вы писали:

...

Runtime error!

Program:...Debug\Serialization.exe

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.


никакого вывода не было вообще.
компилер: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.00.9466 for 80x86 (VC 7.0)
... << RSDN@Home 1.1.3 stable >>
Re[2]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 19:24
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>никакого вывода не было вообще.

Y>компилер: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.00.9466 for 80x86 (VC 7.0)

У меня 13.00.9466 но я не уврене, что это причём-то
Вообще-то программа чисто уникодная, может у тебя 98й?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Проект сериализации - 2 [просьба высказаться]
От: Mamut Швеция http://dmitriid.com
Дата: 08.01.05 19:30
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, yxiie, Вы писали:


Y>>никакого вывода не было вообще.

Y>>компилер: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.00.9466 for 80x86 (VC 7.0)

A>У меня 13.00.9466 но я не уврене, что это причём-то

A>Вообще-то программа чисто уникодная, может у тебя 98й?

У меня то же самое. WinXP SP2
... << RSDN@Home 1.1.4 beta 3 rev. 241>> ... <<Winamp is playing "Kimiko Itoh — 04 River of Crystals">> ...


dmitriid.comGitHubLinkedIn
Re[4]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 19:43
Оценка:
Здравствуйте, Mamut, Вы писали:

M>У меня то же самое. WinXP SP2


что у тебя в папке
C:\Program Files\Microsoft Visual Studio .NET 2003\Visual Studio SDKs ?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[5]: Проект сериализации - 2 [просьба высказаться]
От: Mamut Швеция http://dmitriid.com
Дата: 08.01.05 19:51
Оценка:
A>что у тебя в папке
A>C:\Program Files\Microsoft Visual Studio .NET 2003\Visual Studio SDKs ?

Нужен именно 2003?

А так — DIA SDK и Visual Studio Analyzer SDK
... << RSDN@Home 1.1.4 beta 3 rev. 241>> ... <<Winamp is playing "Mary Black — Carolina Rua">> ...


dmitriid.comGitHubLinkedIn
Re[3]: Проект сериализации - 2 [просьба высказаться]
От: yxiie Украина www.enkord.com
Дата: 08.01.05 21:15
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, yxiie, Вы писали:


Y>>никакого вывода не было вообще.

Y>>компилер: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.00.9466 for 80x86 (VC 7.0)

A>У меня 13.00.9466 но я не уврене, что это причём-то

A>Вообще-то программа чисто уникодная, может у тебя 98й?

XP Professional SP1

вот только что попробовал на этом — и в Debug и в Release такой же результат
может у меня какие-то необходимые опции в проекте не включены? какие хоть оно файлы обрабатывает?

A>что у тебя в папке

A>C:\Program Files\Microsoft Visual Studio .NET 2003\Visual Studio SDKs ?

у меня только DIA SDK и у меня не 2003 как я уже писал, а 2002 (7.0)
... << RSDN@Home 1.1.3 stable >>
Re[6]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 22:33
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Нужен именно 2003?


Понятия не имею Но у меня 2003 и всё работает.

M>А так — DIA SDK и Visual Studio Analyzer SDK


ОК, всё что надо.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 22:35
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>вот только что попробовал на этом — и в Debug и в Release такой же результат

Y>может у меня какие-то необходимые опции в проекте не включены? какие хоть оно файлы обрабатывает?

Обрабатывает *.PDB У тебя должно быть их два ProjectName.pdb и vc70.pdb

Y>у меня только DIA SDK и у меня не 2003 как я уже писал, а 2002 (7.0)


У меня хедер называется dia2.h уж не номер ли версии в названии?

Перешли мне херед из папки DIA SDK
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 22:56
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>Осталось отфильтровать 99.999% типов из pdb и все будет путем


Это тоже будет проходить автоматически. Например далем так

#define DECLARE_SERIALIZABLE enum {__serializable};

class A
 {
  DECLARE_SERIALIZABLE
 }


И потом автоматически отсеиваем классы у которых есть enum с именем __serializable. Всё просто. Можно напридумывать разные такие нейтральные (не меняющие поведение классов) маркеры для генерации разных вещей по уже имеющейся информации о классе.

SD>Насколько я понял ее принцип работы похож на tracewpp из Platform Sdk.

SD>те через DIA получаем все содержимое pdb.

Да.

SD>Вопрос по интерфейсу утилиты: надо спрашивать какой pdb брать тк если в проекте несколько модулей и они все кладут свои бинарники и pdb в один каталог (например "bin") то что?


Это только первая версия. На самом деле программе будет скармливаться файл проекта (*.vcproj) и она уже возьмёт только нужные файлы. Кстати намечается VS Add-in который будет подправлять свойства проекта необходимые для работы утилиты.

SD>Взгляните на 44ю презентацию на КРИ 2004

SD>там для проблемы большого количества данных и модификации схемы использован достаточно специфичный подход. Схема на внешнем языке тк данные важнее чем код.

Моя основная цель это сократить объём кодирования. Ввод внешнего языка и вообще какого-либо ручного описания чего-либо не подразумевается

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


Я собирался не данные для работы с кодом генерировать, а сам код. Так быстрее будет работать и проще использовать. Тем более в контексте Си++, где есть перегруженные функции.

SD>И еще. всегда нужен путь для тех кто может "сделать все сам" а не черный ящик.


Безусловно. Более того, я хочу сделать аналогичную вешь для gcc, если получится конечно. Будут модули сбора информации и модули генерации чего-то там по этой информации. Как это организовать всё я пока не очень придумал.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 22:57
Оценка:
Здравствуйте, adontz, Вы писали:

Обновил программу http://www.rsdn.ru/File/2053/Serialization.rar

Должна теперь не падать, а выдавать нормальные сообщения об ошибках.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[5]: Проект сериализации - 2 [просьба высказаться]
От: yxiie Украина www.enkord.com
Дата: 08.01.05 23:07
Оценка:
Здравствуйте, adontz, Вы писали:

A>Обрабатывает *.PDB У тебя должно быть их два ProjectName.pdb и vc70.pdb


есть

Y>>у меня только DIA SDK и у меня не 2003 как я уже писал, а 2002 (7.0)

A>У меня хедер называется dia2.h уж не номер ли версии в названии?

тоже есть

A>Перешли мне херед из папки DIA SDK


куда переслать?

новая версия выдает:
...:::ERROR:::...
FILE: .\serialization_metainfo_read.cpp
LINE: 14
HRESULT -2147221164

надеюсь это хоть чем-то тебе поможет.
... << RSDN@Home 1.1.3 stable >>
Re[6]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 23:15
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>новая версия выдает:

Y>...:::ERROR:::...
Y>FILE: .\serialization_metainfo_read.cpp
Y>LINE: 14
Y>HRESULT -2147221164
Y>надеюсь это хоть чем-то тебе поможет.

Думаю всё ясно. Вот эта строка
if (FAILED(hResult = CDiaDataSource.CoCreateInstance(CLSID_DiaSource))) throw METAINFO_EXCEPTION;

Судя по всему с VS 7.0 Идёт не таже самая версия, что с VS 7.1 — GUIDы не совпадают. Буду думать (может есть символьное имя ProgID )
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 08.01.05 23:31
Оценка:
Здравствуйте, yxiie, Вы писали:

A>>Перешли мне херед из папки DIA SDK

Y>куда переслать?

Cкажи-ка чему у тебя равено значение поля CLSID в ключе HKEY_CLASSES_ROOT\MSDIA?
У меня {e60afbee-502d-46ae-858f-8272a09bd707}

Работает ли пример dia2dump из DIA SDK?

Там в папке bin есть DLLка. Напусти на неё regsrv32, может просто не зарегистрирована?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[7]: Проект сериализации - 2 [просьба высказаться]
От: Mamut Швеция http://dmitriid.com
Дата: 09.01.05 00:22
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, yxiie, Вы писали:


A>>>Перешли мне херед из папки DIA SDK

Y>>куда переслать?

A>Cкажи-ка чему у тебя равено значение поля CLSID в ключе HKEY_CLASSES_ROOT\MSDIA?

A>У меня {e60afbee-502d-46ae-858f-8272a09bd707}

{151CE278-3CCB-4161-8658-679F8BCF29ED}

A>Работает ли пример dia2dump из DIA SDK?


работает

A>Там в папке bin есть DLLка. Напусти на неё regsrv32, может просто не зарегистрирована?


зарегистрировал, теперь serialize выдает ошибку:

...:::ERROR:::...
FILE: .\serialization_metainfo_read.cpp
LINE: 14
HRESULT -2147221164


... << RSDN@Home 1.1.4 beta 3 rev. 241>> ... <<Winamp is playing "Kimiko Itoh — 12 Follow Me">> ...


dmitriid.comGitHubLinkedIn
Re[8]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.01.05 00:49
Оценка:
Здравствуйте, Mamut, Вы писали:

updated.

Если ничего не поможет, вот msdia71.dll (надо зарегистрировать)
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[8]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.01.05 01:02
Оценка:
Здравствуйте, Mamut, Вы писали:

И для самых стойких ещё одна версия. (Ну не сохранил я старую студию, чтоб сам всё проверить — простите )
http://www.rsdn.ru/File/2053/Serialization2.rar
http://www.rsdn.ru/File/2053/Serialization.rar это другая версия.

Короче если ни одна из них не работает на VC70 я не знаю что делать
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[9]: Проект сериализации - 2 [просьба высказаться]
От: Mamut Швеция http://dmitriid.com
Дата: 09.01.05 01:12
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Mamut, Вы писали:


A>updated.


A>Если ничего не поможет, вот msdia71.dll (надо зарегистрировать)


именно он и нужен

сейчас смотрю на 597 User defined types (UDT) found и диву даюсь Три сырцовых файла общим размером в 8,93 КБ Но — используют Qt. БОльшая часть вытянулась оттуда.

Единственное, кто бы мне сказал, что такое BATTERY_REPORTING_SCALE:

User Defined Type [BATTERY_REPORTING_SCALE] of kind [struct]
{
[NO ENUM]
DATA [Granularity] of type [unsigned long (4 bytes)] of kind [field] with access [public]
DATA [Capacity] of type [unsigned long (4 bytes)] of kind [field] with access [public]
[NO FUNCTION]
[NO UDT]
}




Но — очень прикольно.

Serialization2 тоже работает на ура
... << RSDN@Home 1.1.4 beta 3 rev. 241>> ... <<Winamp is playing "Kimiko Itoh — 04 River of Crystals">> ...


dmitriid.comGitHubLinkedIn
Re[10]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.01.05 01:19
Оценка:
Здравствуйте, Mamut, Вы писали:

M>сейчас смотрю на 597 User defined types (UDT) found и диву даюсь Три сырцовых файла общим размером в 8,93 КБ Но — используют Qt. БОльшая часть вытянулась оттуда.


Да, выдаются все используемые типы. Если что-то было в lib/obj Файлах, то это тоже выдаётся.

M>Единственное, кто бы мне сказал, что такое BATTERY_REPORTING_SCALE:




M>Serialization2 тоже работает на ура


А если разрегистрировать msdia71.dll (и удалить на вский случай) то Serialization2 опять работает? Просто не хочеться с прогой на 62Кб поставлять DLL на 200
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[11]: Проект сериализации - 2 [просьба высказаться]
От: Mamut Швеция http://dmitriid.com
Дата: 09.01.05 01:26
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Mamut, Вы писали:


M>>сейчас смотрю на 597 User defined types (UDT) found и диву даюсь Три сырцовых файла общим размером в 8,93 КБ Но — используют Qt. БОльшая часть вытянулась оттуда.


A>Да, выдаются все используемые типы. Если что-то было в lib/obj Файлах, то это тоже выдаётся.


Я и не против, в принципе... Появились мысли, как ипользовать то или иное, стобы уменьшить зависимости — побочный эффект, так сказать.

M>>Serialization2 тоже работает на ура


A>А если разрегистрировать msdia71.dll (и удалить на вский случай) то Serialization2 опять работает? Просто не хочеться с прогой на 62Кб поставлять DLL на 200


Работает
... << RSDN@Home 1.1.4 beta 3 rev. 241>> ... <<Winamp is playing "Mary Black — Mo Ghile Mar">> ...


dmitriid.comGitHubLinkedIn
Re: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.01.05 01:27
Оценка:
Здравствуйте, adontz, Вы писали:

Люди, если у всех всё заработало, пожалуйста выскажитесь на счёт скорости

[объём исходников в мегабайтах]/[скорость работы в секундах]

[количество UDT]/[скорость работы в секундах]

Утилита должна обрабатывать КУЧУ информации, если она хоть чуть-чуть тормозит, лучше об этом узнать сейчас.
Исходите из того, что время работы утилиты добавится ко времени компиляции.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[12]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.01.05 01:34
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Я и не против, в принципе... Появились мысли, как использовать то или иное, чтобы уменьшить зависимости — побочный эффект, так сказать.


Тут какое дело — использование типа не есть использование объекта этого типа. Когда я пишу что-то вроде
A * pA;
vector<A> va;

тип A использован, а объект типа A нет
M>Работает

Ну если Serialization2 у yxiie тоже заработает то на этом варианте и остановимся.
A journey of a thousand miles must begin with a single step © Lau Tsu
QA Report :)
От: Mamut Швеция http://dmitriid.com
Дата: 09.01.05 01:48
Оценка:
Натравил serialize2 на папку bin Qt:

designer.exe
assistant.exe
linguist.exe
qm2ts.exe
lrelease.exe
lupdate.exe
uic.exe

qm2ts.pdb
assistant.pdb
lupdate.pdb
lrelease.pdb
linguist.pdb
uic.pdb
designer.pdb


Общий размер .pdb: 13.9 МБ
Общее кол-во их кодов: 71,8 МБ

Длительность работы serialize2: 11с первый прогон (на глазок), 6с второй прогон (по виндовым часам), но первый был реально раза в два длиннее

Величина сгенерированного файла: 2,94 МБ

Кол-во найденных типов: 2580
... << RSDN@Home 1.1.4 beta 3 rev. 241>> ... <<Winamp is playing "Kenji Kawai — 02 Kugutsuuta ura mite chiru">> ...


dmitriid.comGitHubLinkedIn
Re[2]: Проект сериализации - 2 [просьба высказаться]
От: Mamut Швеция http://dmitriid.com
Дата: 09.01.05 02:17
Оценка:
Повторюсь:

Натравил serialize2 на папку bin Qt:

qm2ts.pdb
assistant.pdb
lupdate.pdb
lrelease.pdb
linguist.pdb
uic.pdb
designer.pdb


Общий размер .pdb: 13.9 МБ
Общее кол-во их исходников: 41,8 МБ (в прошлый раз забыл учесть .obj файлы)

Длительность работы serialize2: 11с первый прогон (на глазок), 6с второй прогон (по виндовым часам), но первый был реально раза в два длиннее

Величина сгенерированного файла: 2,94 МБ

Кол-во найденных типов: 2580

//--------------------------------------------------
После чего натравил на папку src (сам qt, собссно)

Общий размер исходников: 20 MB
Количество типов: 3410
Время обработки: 6-8 секунд (два разных захода)
Величина сгенерированного файла: 3,78 MB
... << RSDN@Home 1.1.4 beta 3 rev. 241>> ... <<Winamp is playing "Lou reed — Perfect Day (Best Version)">> ...


dmitriid.comGitHubLinkedIn
Re[3]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.01.05 09:17
Оценка:
Здравствуйте, Mamut, Вы писали:

Спасибо большое.
Думаю скорость приемлемая
Переходим к фазе №2 — написание Add-in для Visual Studio
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[13]: Проект сериализации - 2 [просьба высказаться]
От: yxiie Украина www.enkord.com
Дата: 09.01.05 09:20
Оценка:
Здравствуйте, adontz, Вы писали:

A>Ну если Serialization2 у yxiie тоже заработает то на этом варианте и остановимся.


не заработал

...:::ERROR:::...
FILE: .\serialization_metainfo_read.cpp
LINE: 17
HRESULT -2147221164


A>>>Перешли мне херед из папки DIA SDK

Y>>куда переслать?

A>Cкажи-ка чему у тебя равено значение поля CLSID в ключе HKEY_CLASSES_ROOT\MSDIA?

A>У меня {e60afbee-502d-46ae-858f-8272a09bd707}

{151CE278-3CCB-4161-8658-679F8BCF29ED}

A>Работает ли пример dia2dump из DIA SDK?


не знаю, он не откомпилен — а откомпилить не могу — ATL не установлен.

A>Там в папке bin есть DLLка. Напусти на неё regsrv32, может просто не зарегистрирована?

D:\Programs\VS.NET\Visual Studio SDKs\DIA SDK\bin>regsrv32 msdia20.dll
"regsrv32" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.


наверно имелось ввиду: regsvr32? но все-равно после регистрации ничего не работает.
... << RSDN@Home 1.1.3 stable >>
Re[14]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.01.05 09:24
Оценка:
Здравствуйте, yxiie, Вы писали:

Y>D:\Programs\VS.NET\Visual Studio SDKs\DIA SDK\bin>regsrv32 msdia20.dll


Ну тогда вместо msdia20 скачай msdia71 — другого пути нет.
http://rsdn.ru/File/2053/msdia71.rar
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Проект сериализации - 2 [просьба высказаться]
От: yxiie Украина www.enkord.com
Дата: 09.01.05 09:42
Оценка:
Здравствуйте, adontz, Вы писали:

A>Люди, если у всех всё заработало, пожалуйста выскажитесь на счёт скорости

A>[объём исходников в мегабайтах]/[скорость работы в секундах]

1. 1,2 мб/~2 сек.
2. 1,12 /4-5сек

A>[количество UDT]/[скорость работы в секундах]


1. 2666/???
2. 14130/???
не понял, а здесь какое еще время нужно указывать?
первый проект — это то, на что я давал ссылку, во втором используется boost

A>Утилита должна обрабатывать КУЧУ информации, если она хоть чуть-чуть тормозит, лучше об этом узнать сейчас.

A>Исходите из того, что время работы утилиты добавится ко времени компиляции.
... << RSDN@Home 1.1.3 stable >>
Re[3]: Проект сериализации - 2 [просьба высказаться]
От: yxiie Украина www.enkord.com
Дата: 09.01.05 09:46
Оценка:
Здравствуйте, yxiie, Вы писали:

забыл указать конфигурацию:
Athlon 2500+ @ nForce2 Ultra 400 + 1GB DRR400
... << RSDN@Home 1.1.3 stable >>
Re[2]: Проект сериализации - 2 [просьба высказаться]
От: CiViLiS Россия  
Дата: 09.01.05 09:54
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, adontz, Вы писали:


A>[объём исходников в мегабайтах]/[скорость работы в секундах]

самих исходников на 2 метра + boost. pdb файлы имеют размер 12 и 2 метра. Первый проход секунд 10, последующие 3. UDT -- 5693

Проблем с последней версией вроде бы нет.

ЗЫ А могет добавить вывод времени работы и номер/билда.. проще будет
... << RSDN@Home 1.1.4 beta 3 rev. 241>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re: Проект сериализации - 2 [просьба высказаться]
От: yxiie Украина www.enkord.com
Дата: 09.01.05 10:02
Оценка:
Здравствуйте, adontz, Вы писали:

замечены странности: на разные ф-ции оно как попало пишет то полное имя начиная с кореневого namespace, то короткое имя — только имя ф-ции причем абсолютно без оснований:

User Defined Type [BladeFX::Graphics::BHierarchyNode] of kind [class]
{
[NO ENUM]
DATA [hierarchychanged] of type [bool (1 bytes)] of kind [field] with access [protected]
FUNCTION [BladeFX::Graphics::BHierarchyNode::thisclass] of kind [static] with access [public]
FUNCTION [New] of kind [static] with access [public]
FUNCTION [New] of kind [static] with access [public]
FUNCTION [New] of kind [static] with access [public]
...

User Defined Type [BladeFX::Graphics::BMaterial] of kind [class]
{
[NO ENUM]
DATA [pixelshaders] of type [std::vector<BladeFX::Graphics::BMaterial::InstancedPixelShader,std::allocator<BladeFX::Graphics::BMaterial::InstancedPixelShader> > (16 bytes)] of kind [field] with access [protected]
FUNCTION [BladeFX::Graphics::BMaterial::thisclass] of kind [static] with access [public]
FUNCTION [BladeFX::Graphics::BMaterial::New] of kind [static] with access [public]
FUNCTION [New] of kind [static] with access [public]
FUNCTION [BladeFX::Graphics::BMaterial::New] of kind [static] with access [public]
...


здесь очень хорошо видно на ф-ции New — она во всех классах статическая автоматически сгенерированная, но как видно отображение перегруженных вариантов может меняться абсолютно произвольно. тоже самое и с остальными методами, не только со статиками.
... << RSDN@Home 1.1.3 stable >>
Re[2]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.01.05 14:52
Оценка:
Здравствуйте, yxiie, Вы писали:

Приведи минимальный пример исходника, где это проявляется.
Я сделал так

class A
    {
        public:
            void func(char)
                {
                }
            void func(short)
                {
                }
            void func(int)
                {
                }
            void func(float)
                {
                }
    };

И всё нормально вывелось

Parsing time: 0.0340524 seconds
PDBs total size: 52Kb
1 User defined types (UDTs) found
User Defined Type [A] of kind [class]
{
 [NO ENUM]
 [NO DATA]
 FUNCTION [func] of kind [method] with access [public]
 FUNCTION [func] of kind [method] with access [public]
 FUNCTION [func] of kind [method] with access [public]
 FUNCTION [func] of kind [method] with access [public]
 [NO UDT]
}


Обновил программу, теперь она сама выводит время и объём данных
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Проект сериализации - 2 [просьба высказаться]
От: SleepyDrago Украина  
Дата: 12.01.05 00:55
Оценка:
Здравствуйте, adontz

Я тут пробежался по докам DIA и набросал небольшой примерчик ...
В общем у меня есть предложение по поводу скорости работы утилитки

* на первом шаге фильтруем файлы исходных текстов по пути

(там есть полпинковый способ получить енумератор исходных файлов)
и время работы будет постоянной величиной для _ЛЮБЫХ_ проектов разумного размера

таким образом сразу отсекается основной вагон типов из Boost, STL, ATL, Windows+Com ...

wbr
Re[4]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 12.01.05 01:41
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>* на первом шаге фильтруем файлы исходных текстов по пути


Это как-то бысмысленно. Может быть, что cpp-файл включает заголовочный файл, не включённый в проект, но поддерживающий данную сериализацию.
По поводу отсева информации http://www.rsdn.ru/Forum/Message.aspx?mid=978549&amp;only=1

SD>(там есть полпинковый способ получить енумератор исходных файлов)

SD> и время работы будет постоянной величиной для _ЛЮБЫХ_ проектов разумного размера

Не будет, если только PDB файл это не граф с заранее прописанными связями, в чём лично я несколько сомневаюсь. Будет время проверю скорость, он особо быстрее, чем несколько секунд всё равно не выйдет. ИМХО ради такого дела и 5-10 секунд подождать не жалко, тем более, что ничего не мешает организовать некоторое кеширование и не парсить не изменившиеся файлы, если уж всё будет действительно медленно.

SD>таким образом сразу отсекается основной вагон типов из Boost, STL, ATL, Windows+Com ...


А он и так отсекается смотри про DECLARE_SERIALIZABLE. Более того, его и нельзя не отсекать, потому что никакая умная сериализация не поймёт, что _Myfirst и _Mylast это указатели на начало и конец одного и того же блока памяти. Такие типы как в Boost/STL надо подготавливать к сериализации вручную.
Как сериализовать СОМ я пока не решил (CoMarshalInterface/CoUnmarshalInterface? больше ничего в голову не пришло)

Утилита которая есть сейчас это отладочная версия. Если она выводит информацию обо всех типах, это не значит, что в дальнейшем она буддет всю эту информацию хранить и использовать.

ЗЫ кстати идея, а что если по Си++ коду генерировать COM TypeLibrary? No more IDL, тем более, что MSVC поддерживает аттрибуты
Например объявлять это дело так (кто не в курсе, это Си++ код!)
[object, uuid("12753B9F-DEF4-49b0-9D52-A79C371F2909")]
__interface MyInterface : public IUnknown
    {
        virtual HRESULT __stdcall MyMethod([in] LONG param1, [out] BSTR * param2) = 0;
    };

Можно автоматически генерировать реализации IDispatch, QueryInterface (больше никаких COM_MAP) и проч. и проч.
Если ещё сделать редактор того, что обычно есть в rgs файле, то ATL умрёт

Чё-то я слишком уже разогнался....
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[5]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 12.01.05 01:52
Оценка:
Здравствуйте, adontz, Вы писали:

A>ЗЫ кстати идея, а что если по Си++ коду генерировать COM TypeLibrary? No more IDL, тем более, что MSVC поддерживает аттрибуты


Это я погнал конечно.

A>Например объявлять это дело так (кто не в курсе, это Си++ код!)

A>
A>[object, uuid("12753B9F-DEF4-49b0-9D52-A79C371F2909")]
A>__interface MyInterface : public IUnknown
A>    {
A>        virtual HRESULT __stdcall MyMethod([in] LONG param1, [out] BSTR * param2) = 0;
A>    };
A>

A>Можно автоматически генерировать реализации IDispatch, QueryInterface (больше никаких COM_MAP) и проч. и проч.

А вот это уже нет.

A>Если ещё сделать редактор того, что обычно есть в rgs файле, то ATL умрёт


ATL не умрёт, но редактор делать надо
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Проект сериализации - 2 [просьба высказаться]
От: SleepyDrago Украина  
Дата: 12.01.05 23:22
Оценка:
Здравствуйте, adontz,

Sorry моя ошибочка.
К ночи дощел до получения коллекции символов по файлу исходного текста
но не посмотрел что в коллекции. А сегодня посмотрел — там Udt нету, там только obj.
так что беру свое предложение назад.

wbr
Re[7]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 13.01.05 01:14
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>так что беру свое предложение назад.


Не отдам
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Проект сериализации - 2 [просьба высказаться]
От: Demay  
Дата: 13.01.05 10:54
Оценка:
Здравствуйте, adontz, Вы писали:

A>Вот тут утилитка (только для Visual Studio) которая собиарет информацию о классах.

A>Затускать в $(OutDir) (которых если ничего не менять обычно две Debug и Release) уже после того как проект собран
A>Выводит кучу информации, так что лучше сразу делать редирект в файл. (например так Serialization.exe > metadata.txt)
A>Насколько я понял (гы-гы) выводит информацию только об используемых (но не объявленных) классах. Так что если класс объявлен, но не используется его в выводе скорее всего не будет.

...:::ERROR:::...
FILE: .\serialization_metainfo_read.cpp
LINE: 17
HRESULT -2147221164
Re[2]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 13.01.05 13:39
Оценка:
Здравствуйте, Demay, Вы писали:

D>
D>...:::ERROR:::...
D>FILE: .\serialization_metainfo_read.cpp
D>LINE: 17
D>HRESULT -2147221164
D>

http://www.rsdn.ru/File/2053/msdia71.rar
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Проект сериализации - 2 [просьба высказаться]
От: Demay  
Дата: 14.01.05 10:00
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Demay, Вы писали:


D>>
D>>...:::ERROR:::...
D>>FILE: .\serialization_metainfo_read.cpp
D>>LINE: 17
D>>HRESULT -2147221164
D>>

A>http://www.rsdn.ru/File/2053/msdia71.rar

таже ошибка,
msdia71.dll копировал и в каталог c программой и в %WINDIR%\System32
компилятор VC-7.1 13.10.3052
Re[4]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.01.05 12:40
Оценка:
Здравствуйте, Demay, Вы писали:

D>msdia71.dll копировал и в каталог c программой и в %WINDIR%\System32

D>компилятор VC-7.1 13.10.3052

А зарегистрировать regsvr32 ?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[5]: Проект сериализации - 2 [просьба высказаться]
От: adontz Грузия http://adontz.wordpress.com/
Дата: 16.01.05 13:15
Оценка:
Здравствуйте, adontz, Вы писали:

ПРОДОЛЖЕНИЕ
http://www.rsdn.ru/Forum/Message.aspx?mid=989542
A journey of a thousand miles must begin with a single step © Lau Tsu