Linux: Полное руководство
Шрифт:
Как
22.5.2. Как оптимизировать программу
В качестве оптимизации программы могу вам порекомендовать предпринять следующие действия:
1. Запустите профайлер, и пусть он определит время работы всех функций.
2. Перепишите функцию (или функции), которые занимают больше всего процессорного времени. Возможно, вам придется изменить алгоритм работы этих функций.
3. Когда алгоритм изменить невозможно, можно попытаться переписать часть кода функции на языке ассемблера, если, конечно, это не противоречит идеологии вашей программы (возможно, вы хотите, чтобы она запускалась на как можно большем количестве разных платформ — тут без С не обойтись). Если переработка функции невозможна или помогла мало, то попробуйте оптимизировать программу с помощью опций компилятора. Прежде всего выключите отладочную информацию (не указывайте опцию —g) — и размер программы станет меньше. Используйте одну из опций оптимизации -O.
Глава 23
Разработка графического приложения: библиотека GTK+
Сейчас мы поговорим о создании графического интерфейса для вашей Linux-программы. Как вы знаете, средствами одного С нормальный GUI не построишь, тем более что привычный пользователь Windows очень требователен не просто к наличию GUI, но и к дизайну формы (окна программы). Поэтому без дополнительных библиотек вам не обойтись. Самыми распространенными библиотеками для создания GUI являются библиотеки GTK+ и Qt. Рекомендуется использовать только эти библиотеки, поскольку велика вероятность того, что они уже будут установлены у пользователя (уж GNOME и KDE есть почти у всех). Рассмотрим подробно библиотеку GTK+, поскольку она, на мой взгляд, проще, чем Qt.
Скорее всего, GTK+ у вас уже установлена, но вам понадобится дополнительно установить пакет gtk+-devel, содержащий необходимые файлы для разработки GTK-программ.
23.1. Введение в GTK+
Первоначально библиотека GTK+ (далее GTK) была разработана для использования программой GIMP, отсюда и название —The GIMP Toolkit. Со временем библиотека стала использоваться для разработки других приложений для среды GNOME. Сейчас GTK — это объектно-ориентированный и кросс-платформенный инструмент для создания графического интерфейса приложений, причем созданные с использованием GTK приложения независимы от среды GNOME. Ваше приложение, написанное на GTK, будет отлично работать в KDE или любой другой среде — главное, чтобы библиотека GTK была установлена на компьютере.
Сама библиотека GTK+ стоит на трех китах:
♦ Библиотека Glib — предназначена для оперирования с различными типами данных. Данная библиотека будет полезной для разработки любых приложений, даже не GTK. Эта же библиотека содержит функции для работы с памятью и для
♦ Библиотека GDK (The GIMP Drawing Kit) — библиотека низкого уровня, ее функции взаимодействуют с функциями оконной системы (X Window). Используется для построения графических примитивов.
♦ Библиотека GTK — используется для создания графического интерфейса
23.2. Библиотека Glib
23.2.1. Стандартные типы данных библиотеки Glib
Библиотека Glib содержит типы данных, аналогичные типам данных языка С, а также такие структуры, как деревья, списки; функции для работы с памятью и обработки ошибок. Это сделано для того, чтобы ваше приложение могло быть легко портировано на другую платформу. Например, на одних компьютерах тип int может быть 32-разрядным, а на других — 64-разрядным (это зависит от архитектуры центрального процессора), А если вы используете тип gint, объявленный в библиотеке Glib, то можете дальше разрабатывать свое приложение и не беспокоиться о том, как оно будет работать на RISC-машине под управлением Windows NT. В таблице 23.1 перечислены типы данных библиотеки GLib, которые соответствуют типам данных С.
Таблица соответствия типов данных Glib и С Таблица 23.1
Тип данных С | Тип данных Glib |
---|---|
char | gchar |
short | gshort |
long | glong |
int | gint |
bool | gboolean |
unsigned char | guchar |
unsigned short | gushort |
unsigned long | gulong |
unsigned int | guint |
float | gfloat |
double | gdouble |
long double | gldouble |
void* | gpointer |
Для использования этих типов данных, как и прочих возможностей библиотеки Glib, необходимо подключить заголовочный файл glib.h.
23.2.2. Функции для работы с памятью
Функции для работы с памятью библиотеки Glib выполняют те же действия, что и соответствующие им функции языка С. Вот их прототипы:
23.2.3. Строки и Glib
Библиотека Glib содержит довольно много функций для работы со строками, но я перечислю лишь самые с моей точки зрения интересные (таблица 23.2).
Некоторые строковые функции библиотеки Glib Таблица 23.2
Прототип | Описание |
---|---|
gchar* g_strchug(gchar* s) | Функция удаляет все пробелы в строке s, стоящие в начале строки (до первого печатного символа). Данная функция может пригодиться для контроля введенной пользователем информации |
gchar* g_strchomp(gchar* s) | Функций удаляет все пробелы в строке s, стоящие в конце строки |
gchar* g_strstrip(gchar* s) | Функция удаляет пробелы а начале и в конце строки |
void g_strdown(gchar* s) | Функция переводит все буквы строки s в нижний регистр |
void g_strup(gchar* s) | Функция переводит все буквы строки s в верхний регистр |
void g_strreverse(gchar* s) | Функция преобразовывает прописные буквы в строчные и наоборот |