Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / В классе Graphics тормозит метод drawString / 14 сообщений из 14, страница 1 из 1
28.02.2013, 13:33:30
    #38169468
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Здравствуйте. Заметил у себя, что при вызове хотя бы одного метода drawString, отрисовка зависает почти на секунду. Другие методы, типо drawLine, не тормозят, хоть тысячи раз вызывай. А в чем может быть проблема?
...
Рейтинг: 0 / 0
28.02.2013, 13:48:08
    #38169511
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
И такое тоже тормозит почти на секунду:
Код: java
1.
2.
	char[] mas = {'-', 'П', 'А', 'Ш', 'А', '!'};
	graphics2D.drawChars(mas, 0, 6, 123, 321);
...
Рейтинг: 0 / 0
28.02.2013, 13:51:18
    #38169524
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Паша01Здравствуйте. Заметил у себя, что при вызове хотя бы одного метода drawString, отрисовка зависает почти на секунду. Другие методы, типо drawLine, не тормозят, хоть тысячи раз вызывай. А в чем может быть проблема?
Шрифт какой-нибудь экзотический? Код покажите. Профайлить не пробовали?
...
Рейтинг: 0 / 0
28.02.2013, 13:52:52
    #38169527
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
И ещё, откуда Graphics? Java2D? А то мало ли что там у вас за реализация, SVG, PDF...
...
Рейтинг: 0 / 0
28.02.2013, 14:02:10
    #38169552
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;

public class Drerter extends JPanel {

    public Drerter() {
    }

    public void paintComponent(Graphics g) {
	super.paintComponent(g);
	drawCoordinatesDesh(g);
    }

    public void drawCoordinatesDesh(Graphics g) {
	Graphics2D graphics2D = (Graphics2D) g;
	graphics2D.setFont(new Font("Helvetica", 1, 10));	
	graphics2D.drawString("-123", 123, 321);
    }
    
}
...
Рейтинг: 0 / 0
28.02.2013, 14:02:59
    #38169556
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Да обычный книжный пример!
...
Рейтинг: 0 / 0
28.02.2013, 14:04:58
    #38169567
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Только что закомментил строку
Код: java
1.
//graphics2D.setFont(new Font("Helvetica", 1, 10));	


И тормозить перестало!
...
Рейтинг: 0 / 0
28.02.2013, 14:06:15
    #38169571
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
BlazkowiczШрифт какой-нибудь экзотический? Код покажите. Профайлить не пробовали?
Реально в шрифте дело оказалось, не ожидал! А что значит профайлить?
...
Рейтинг: 0 / 0
28.02.2013, 14:06:43
    #38169573
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Blazkowicz,
Спасибо!
...
Рейтинг: 0 / 0
28.02.2013, 14:10:39
    #38169584
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Паша01Да обычный книжный пример!
Хорошая книжка! Не вы первый на грабли наступили:
http://stackoverflow.com/questions/10360148/java-swing-graphics2d-drawstring-slow-initiation
...
Рейтинг: 0 / 0
28.02.2013, 14:11:57
    #38169588
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Паша01А что значит профайлить?
Профайлером можно проанализировать выполнение кода и увидеть на какие конкретно методы ушло время работы JVM.
JDK/bin/jvisualvm.exe
...
Рейтинг: 0 / 0
28.02.2013, 14:14:32
    #38169593
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
BlazkowiczПаша01А что значит профайлить?
Профайлером можно проанализировать выполнение кода и увидеть на какие конкретно методы ушло время работы JVM.
JDK/bin/jvisualvm.exe
Офигеть, не знал! Вот теперь большое спасибо!
...
Рейтинг: 0 / 0
28.02.2013, 14:16:24
    #38169598
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Паша01Только что закомментил строку
Код: java
1.
//graphics2D.setFont(new Font("Helvetica", 1, 10));	


И тормозить перестало!
Методы отрисовки на экран очень чуствительные к производительности. Стоит туда напихать подобной ерунды и весь GUI начет жутко лагать. А потом жалуются мол Swing тормозить.
Начать хотя бы с того что вы новый Font создаёте каждый раз. Естественно при попытке его отрисовать происходит поиск в загруженых шрифтах. Самый первый вызов вообще может растянутся на несколько секунд, пока Swing сканирует системные шрифты.
Ну, и сам шрифт можно было один раз задать компоненте и не трогать его в отрисовке вообще.
...
Рейтинг: 0 / 0
28.02.2013, 14:21:40
    #38169607
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В классе Graphics тормозит метод drawString
Blazkowiczсам шрифт можно было один раз задать компоненте и не трогать его в отрисовке вообще.
На самом деле я так и сделал, но для наглядности тут написал
Код: java
1.
new Font(...)

.
BlazkowiczСамый первый вызов вообще может растянутся на несколько секунд, пока Swing сканирует системные шрифты.
Но про это тоже не знал, спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / В классе Graphics тормозит метод drawString / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]