LINUX.ORG.RU

Сообщения Vinick

 

Оптимизация ввода-вывода

Форум — Development

Мне в процессе работы программы необходимо прочитать файл размером
порядка 2 гб, а потом записать в другой файл. Читаю и пишу я через
stdio блоками по 100 байт. Секундомер показал что примерно половину
времени я трачу на работу с диском. Можно ли уменьшить время
ввода-вывода увеличив размер читаемого(записываемого) блока?


На простом тесте :
// test1
int main()
{
char buf[100];
FILE * fp = fopen("input","rb");
while(!feof(fp))
{
fread(buf,1,100,fp);
}
return 0;
}

// test2
int main()
{
char buf[1000000];
FILE * fp = fopen("input","rb");
while(!feof(fp))
{
fread(buf,1,1000000,fp);
}
return 0;
}

особого различия я не заметил.

Vinick
()

QT console application

Форум — Development

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

Vinick
()

GCC-Frontend-HOWTO на русском

Форум — Development

Кто-нибудь знает - существует ли перевод GCC-FrontEnd-HOWTO на русском языке?

Я знаю что есть книга на русском языке "Компилятор GCC", в которую включено если не само HOWTO, то много информации из него. Hо хочется получить информацию в электронном виде и бесплатно.

Vinick
()

Эффективность switch в C

Форум — Development

У меня в функции обрбатывается switch с несколькими десятками вариантов (а возможно количество вариантов вырастет до нескольких сотен). Сама функция вызывается в бесконечном цикле. Проще говоря я пытаюсь реализовать примитивный интерпретатор байт-кода. В связи с этим появился вопрос - а насколько эффективным будет такой большой switch и есть ли какие-нибудь методы его оптимизации.

Vinick
()

Ошибки при линковке

Форум — Development

 Господа, кто-нибудь может рассказать что означают эти ошибки при сборке c поощью gcc-3.2.2:

app/libapp.a(metadatatree.o)(.text+0xa8): In function `CMetadataTree::CMetadataTree[not-in-charge]()':
/home/vinick/work/1L/w1xl/src/app/metadatatree.cpp:75: undefined reference to `vtable for CMetadataTree'
app/libapp.a(metadatatree.o)(.text+0x26e): In function `CMetadataTree::CMetadataTree[in-charge]()':
/home/vinick/work/1L/w1xl/src/app/metadatatree.cpp:75: undefined reference to `vtable for CMetadataTree'
app/libapp.a(metadatatree.o)(.text+0x425): In function `CMetadataTree::~CMetadataTree [not-in-charge]()':
/home/vinick/work/1L/w1xl/src/app/metadatatree.cpp:94: undefined reference to `vtable for CMetadataTree'

что такое undefined reference я знаю, но вот что значит vtable, [in-charge], [not-in-charge] и т.д.... и как с этим боротсься
Vinick
()

flex и Unicode

Форум — Development

Подскажите где можно найти рабочий flex с наложенным Unicode-патчем?
я нашел только отдельно патч и отдельно flex-2.5.4, но flex после сборки
с ним генерирует совершенно некомпилируемый код, я и это вроде
подравил, но прога стала вываливатся по SIGSEGV и мое терпение
кончилось.

Vinick
()

похоже я сломал rpm

Форум — Admin

я тут установил пару rpm'ок с rpmfind.net. у меня стоит rh8.0 а пакеты были от мандрэйка. и теперь я вобще ничего не могу сделать с rpm, ни rpm -i, ни rpm -q не работают. люди скажите, что произошло и как мне можно востановить систему да и можно ли вообще.

Vinick
()

как определить в каком rpm находиться нужный файл?

Форум — Admin

как можно определить в каком пакете из дистрибутивной поставки, находиться определенный файл, если он вообще там есть. а то попытался установить fwbuilder из rpm, он потребовал libgdkmm.1.2.so.1, нутром чую - должен быть, но вот где, я не знаю. должно же быть какое-нибудь средство для таких случаев.

Vinick
()

Ошибки при загрузке ядра

Форум — Admin

При ззагрузке появляются такие сообщения: hda: dma_intr: status=0x51 {DriveReady SeekComplete Error} hda: dma_intr: error=0x84 {DriveStatusError BadCRC} в дальнейшем загрука и работа проходят без видимых проблем. Но все-таки страшно. вдруг в один прекарсный момент все порушиться. система RH8.0 ядро из дистрибутива - 2.4.18-14. кто-нибудь знает что это за сообщения?

Vinick
()

аналог T-mail в Linux

Форум — General

Сейчас на машине c виндами установлен T-mail, у него в subst.lst прописан список адресов клиентов и для каждого адреса установлен параметр BOX, клиент через свой T-mail звонит на мою машину, забирает файлы из BOX и присылает файло в каталог прописанный в Inbound. Я хочу перевести свою машину с T-mail под Linux,но не знаю с помощью каких средств в Linux можно реализовать такую схему, чтобы для клиентов это произошло незаметно. Помогите мне пожалуйста.

Vinick
()

дата файла Linux <-> дата файла Windows

Форум — Development

при архивировании файла arj'ем под Linux и последующей распаковке архива под виндами, содержимое архива получает совершенно непотребную дату модификации - типа 20.11.58. Подскажите из-за чего такое может происходить?

Vinick
()

Неявное создание объектов в С++

Форум — Development

Хочу реализовать что-то вроде механизма плагинов, пока не динамически
подключаемых.  Каждый плагин представляет собой класс имеющий метод 
run() внутри которого и будет выполняться полезная работа. Проблема в 
том что при запуске надо инициализировать GUI, т.е сообщить ему(ей)  
какие плагины в данный момент существуют, при этом сами объекты 
классов, реализующих плагины, еще не созданы.  
Для этого придумал такую конструкцию : 
class AbstractPlugin 
{ 
 public:   
 virtual void run()=0; 
 virtual string initGUI()=0; 
}; 
 
class PluginCtor 
{ 
 public: 
 virtual  AbstractPlugin * create()=0; 
 virtual void registerPlugin()=0;  
}; 
 
class PluginManager 
{ 
  friend class PluginCtor; 
 public: 
  static  vector<PluginCtor *> * theCtors; 
}; 
 
#define CREATECTOR(name) \ 
class Ctor##name : public PluginCtor { \ 
public: \ 
AbstractPlugin * create() { return new (##name)();} \ 
void registerPlugin() {PluginManager::theCtors->push_back(this);} \ 
Ctor##name() {registerPlugin();} \ 
}; \ 
static Ctor##name Ctor##name##_var; 
  
class RealPlugin : public AbstractPlugin 
{ 
 public: 
  void run(); 
  string initGUI(); 
}; 
  
Здесь все классы-плагины должны быть потомками AbstractPlugin, и в 
файле с реализацией (*.cpp) вызывать макрос CREATECTOR() со своим 
именем в качестве параметра. А дальше  в main() я пробегаю по массиву 
theCtors, создаю объект через create(), вызываю initGUI() и сразу же 
уничтожаю.   
А вопрос такой : как все это можно реализовать средствами С++ проще, по возможности без использования статических переменных(static Ctor##name Ctor##name##_var;), а лучше вообще без макросов.  Может кто-нибудь уже  делал что-то подобное? 

Vinick
()

RSS подписка на новые темы