You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Nicolas Peltier (JIRA)" <ji...@apache.org> on 2019/01/09 09:03:00 UTC
[jira] [Commented] (SLING-8205) stop using Class.getField() to stop
spitting out NoSuchFieldException
[ https://issues.apache.org/jira/browse/SLING-8205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16737982#comment-16737982 ]
Nicolas Peltier commented on SLING-8205:
----------------------------------------
cc [~radu.cotescu] did some tests as follow: on a blank adobe experience manager 6.4 (using compiler 1.0.20-1.3.1) hit 1000 times the sample page /content/we-retail/us/en/men.html with apache benchmark and 10 concurrent users (which is {{ab -n 1000 -c 10 -A admin:admin http://localhost:4502/content/we-retail/us/en/men.html\?wcmmode\=disabled}}). 1.13 M NoSuchFieldExceptions are spit. 0 with the fix i'll PR.
Moreover, the time taken (after "heating" the instance by running several times this test) i get
With NSFE
{Code}
Server Hostname: localhost
Server Port: 4502
Document Path: /content/we-retail/us/en/men.html?wcmmode=disabled
Document Length: 65759 bytes
Concurrency Level: 10
Time taken for tests: 28.536 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 65887000 bytes
HTML transferred: 65759000 bytes
Requests per second: 35.04 [#/sec] (mean)
Time per request: 285.360 [ms] (mean)
Time per request: 28.536 [ms] (mean, across all concurrent requests)
Transfer rate: 2254.79 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 1
Processing: 117 283 45.5 277 573
Waiting: 106 262 42.7 256 553
Total: 117 284 45.5 277 573
Percentage of the requests served within a certain time (ms)
50% 277
66% 295
75% 306
80% 317
90% 342
95% 367
98% 394
99% 417
100% 573 (longest request)
{Code}
and without:
{Code}
Server Hostname: localhost
Server Port: 4502
Document Path: /content/we-retail/us/en/men.html?wcmmode=disabled
Document Length: 65759 bytes
Concurrency Level: 10
Time taken for tests: 21.382 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 65887000 bytes
HTML transferred: 65759000 bytes
Requests per second: 46.77 [#/sec] (mean)
Time per request: 213.825 [ms] (mean)
Time per request: 21.382 [ms] (mean, across all concurrent requests)
Transfer rate: 3009.14 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 3
Processing: 101 212 37.4 206 438
Waiting: 86 188 33.8 182 407
Total: 101 212 37.4 206 438
Percentage of the requests served within a certain time (ms)
50% 206
66% 223
75% 235
80% 242
90% 262
95% 279
98% 298
99% 338
100% 438 (longest request)
{Code}
> stop using Class.getField() to stop spitting out NoSuchFieldException
> ---------------------------------------------------------------------
>
> Key: SLING-8205
> URL: https://issues.apache.org/jira/browse/SLING-8205
> Project: Sling
> Issue Type: Improvement
> Components: Scripting
> Reporter: Nicolas Peltier
> Assignee: Nicolas Peltier
> Priority: Major
>
> According to java mission control, exceptions are bad for performances, and o.a.s.scripting.sightly.compiler.util.ObjectModel uses Class.getField first to check if a use member is a simple field or a method, which generates *lots* of exceptions.
> Switching to simple lookup through getFields (that looks also to super classes fields) _looks_ quicker (this of course would need to be thoroughly tested)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)