JavaFx: Rendering 500k rectangles is very slow the 1.time, but fast afterwards. Why?
I am using JavaFx and Canvas to render a map as 500k colored rectangles. The 1.time I render them, it takes around 40 seconds, but later less than 1 second:
1.Time:
10:11:17:133 INFO jfws.util.map.MapRenderer - render()
10:11:54:469 INFO jfws.editor.map.MapEditorController - render(): Finished
Later:
10:40:23:905 INFO jfws.util.map.MapRenderer - render()
10:40:23:989 INFO jfws.editor.map.MapEditorController - render(): Finished
The code contains 2 loops with 2 commands per rectangle:
graphicsContext.setFill(color);
graphicsContext.fillRect(x, y, width, height);
See MapRenderer.java.
I am also rendering a small map with 200 rectangles many times before that without any problems.
java javafx 2d rendering
add a comment |
I am using JavaFx and Canvas to render a map as 500k colored rectangles. The 1.time I render them, it takes around 40 seconds, but later less than 1 second:
1.Time:
10:11:17:133 INFO jfws.util.map.MapRenderer - render()
10:11:54:469 INFO jfws.editor.map.MapEditorController - render(): Finished
Later:
10:40:23:905 INFO jfws.util.map.MapRenderer - render()
10:40:23:989 INFO jfws.editor.map.MapEditorController - render(): Finished
The code contains 2 loops with 2 commands per rectangle:
graphicsContext.setFill(color);
graphicsContext.fillRect(x, y, width, height);
See MapRenderer.java.
I am also rendering a small map with 200 rectangles many times before that without any problems.
java javafx 2d rendering
it's due to the cache. When you open something, you load many abojet, but when you close it, some data stay il your computer to load faster.
– charles Lgn
Nov 24 '18 at 10:26
Even if I modify part of the map (~5k rectangles), it still renders the whole 500k in less than a second.
– Orchaldir
Nov 24 '18 at 10:32
What hapen if thé first tome you load 1 rectangle ?
– charles Lgn
Nov 24 '18 at 10:33
An loading a different map, which changes the color of every rectangle is equally fast.
– Orchaldir
Nov 24 '18 at 10:34
The application starts with rendering a map with 200 rectangles. That happens very fast. Later it switches to the larger map and it slows down the 1.time rendering it.
– Orchaldir
Nov 24 '18 at 10:41
add a comment |
I am using JavaFx and Canvas to render a map as 500k colored rectangles. The 1.time I render them, it takes around 40 seconds, but later less than 1 second:
1.Time:
10:11:17:133 INFO jfws.util.map.MapRenderer - render()
10:11:54:469 INFO jfws.editor.map.MapEditorController - render(): Finished
Later:
10:40:23:905 INFO jfws.util.map.MapRenderer - render()
10:40:23:989 INFO jfws.editor.map.MapEditorController - render(): Finished
The code contains 2 loops with 2 commands per rectangle:
graphicsContext.setFill(color);
graphicsContext.fillRect(x, y, width, height);
See MapRenderer.java.
I am also rendering a small map with 200 rectangles many times before that without any problems.
java javafx 2d rendering
I am using JavaFx and Canvas to render a map as 500k colored rectangles. The 1.time I render them, it takes around 40 seconds, but later less than 1 second:
1.Time:
10:11:17:133 INFO jfws.util.map.MapRenderer - render()
10:11:54:469 INFO jfws.editor.map.MapEditorController - render(): Finished
Later:
10:40:23:905 INFO jfws.util.map.MapRenderer - render()
10:40:23:989 INFO jfws.editor.map.MapEditorController - render(): Finished
The code contains 2 loops with 2 commands per rectangle:
graphicsContext.setFill(color);
graphicsContext.fillRect(x, y, width, height);
See MapRenderer.java.
I am also rendering a small map with 200 rectangles many times before that without any problems.
java javafx 2d rendering
java javafx 2d rendering
asked Nov 24 '18 at 10:09
OrchaldirOrchaldir
116
116
it's due to the cache. When you open something, you load many abojet, but when you close it, some data stay il your computer to load faster.
– charles Lgn
Nov 24 '18 at 10:26
Even if I modify part of the map (~5k rectangles), it still renders the whole 500k in less than a second.
– Orchaldir
Nov 24 '18 at 10:32
What hapen if thé first tome you load 1 rectangle ?
– charles Lgn
Nov 24 '18 at 10:33
An loading a different map, which changes the color of every rectangle is equally fast.
– Orchaldir
Nov 24 '18 at 10:34
The application starts with rendering a map with 200 rectangles. That happens very fast. Later it switches to the larger map and it slows down the 1.time rendering it.
– Orchaldir
Nov 24 '18 at 10:41
add a comment |
it's due to the cache. When you open something, you load many abojet, but when you close it, some data stay il your computer to load faster.
– charles Lgn
Nov 24 '18 at 10:26
Even if I modify part of the map (~5k rectangles), it still renders the whole 500k in less than a second.
– Orchaldir
Nov 24 '18 at 10:32
What hapen if thé first tome you load 1 rectangle ?
– charles Lgn
Nov 24 '18 at 10:33
An loading a different map, which changes the color of every rectangle is equally fast.
– Orchaldir
Nov 24 '18 at 10:34
The application starts with rendering a map with 200 rectangles. That happens very fast. Later it switches to the larger map and it slows down the 1.time rendering it.
– Orchaldir
Nov 24 '18 at 10:41
it's due to the cache. When you open something, you load many abojet, but when you close it, some data stay il your computer to load faster.
– charles Lgn
Nov 24 '18 at 10:26
it's due to the cache. When you open something, you load many abojet, but when you close it, some data stay il your computer to load faster.
– charles Lgn
Nov 24 '18 at 10:26
Even if I modify part of the map (~5k rectangles), it still renders the whole 500k in less than a second.
– Orchaldir
Nov 24 '18 at 10:32
Even if I modify part of the map (~5k rectangles), it still renders the whole 500k in less than a second.
– Orchaldir
Nov 24 '18 at 10:32
What hapen if thé first tome you load 1 rectangle ?
– charles Lgn
Nov 24 '18 at 10:33
What hapen if thé first tome you load 1 rectangle ?
– charles Lgn
Nov 24 '18 at 10:33
An loading a different map, which changes the color of every rectangle is equally fast.
– Orchaldir
Nov 24 '18 at 10:34
An loading a different map, which changes the color of every rectangle is equally fast.
– Orchaldir
Nov 24 '18 at 10:34
The application starts with rendering a map with 200 rectangles. That happens very fast. Later it switches to the larger map and it slows down the 1.time rendering it.
– Orchaldir
Nov 24 '18 at 10:41
The application starts with rendering a map with 200 rectangles. That happens very fast. Later it switches to the larger map and it slows down the 1.time rendering it.
– Orchaldir
Nov 24 '18 at 10:41
add a comment |
1 Answer
1
active
oldest
votes
I found an answer! :-D
I render the large map with PixelWriter into an WritableImage and then draw the image on the canvas. Now the rendering takes less than 1 second!
See commit.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53457105%2fjavafx-rendering-500k-rectangles-is-very-slow-the-1-time-but-fast-afterwards%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I found an answer! :-D
I render the large map with PixelWriter into an WritableImage and then draw the image on the canvas. Now the rendering takes less than 1 second!
See commit.
add a comment |
I found an answer! :-D
I render the large map with PixelWriter into an WritableImage and then draw the image on the canvas. Now the rendering takes less than 1 second!
See commit.
add a comment |
I found an answer! :-D
I render the large map with PixelWriter into an WritableImage and then draw the image on the canvas. Now the rendering takes less than 1 second!
See commit.
I found an answer! :-D
I render the large map with PixelWriter into an WritableImage and then draw the image on the canvas. Now the rendering takes less than 1 second!
See commit.
answered Dec 4 '18 at 21:49
OrchaldirOrchaldir
116
116
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53457105%2fjavafx-rendering-500k-rectangles-is-very-slow-the-1-time-but-fast-afterwards%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
it's due to the cache. When you open something, you load many abojet, but when you close it, some data stay il your computer to load faster.
– charles Lgn
Nov 24 '18 at 10:26
Even if I modify part of the map (~5k rectangles), it still renders the whole 500k in less than a second.
– Orchaldir
Nov 24 '18 at 10:32
What hapen if thé first tome you load 1 rectangle ?
– charles Lgn
Nov 24 '18 at 10:33
An loading a different map, which changes the color of every rectangle is equally fast.
– Orchaldir
Nov 24 '18 at 10:34
The application starts with rendering a map with 200 rectangles. That happens very fast. Later it switches to the larger map and it slows down the 1.time rendering it.
– Orchaldir
Nov 24 '18 at 10:41