<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:55:07 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[YANGTOOLS-1076] Trim down SchemaPath size</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1076</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Current layout of SchemaPath favors instantiation of temporary paths and their retention in the object, which means we will end up eating up memory even after we have completed all that is needed. Furthermore we are caching hashCode in the SchemaPath object.&lt;/p&gt;

&lt;p&gt;This results in the following layout:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;***** 32-bit VM: **********************************************************
org.opendaylight.yangtools.yang.model.api.SchemaPath object internals:
 OFFSET  SIZE                                                   TYPE DESCRIPTION                               VALUE
      0     8                                                        (object header)                           N/A
      8     4                                                    int SchemaPath.hash                           N/A
     12     4   org.opendaylight.yangtools.yang.model.api.SchemaPath SchemaPath.parent                         N/A
     16     4           org.opendaylight.yangtools.yang.common.QName SchemaPath.qname                          N/A
     20     4                com.google.common.collect.ImmutableList SchemaPath.legacyPath                     N/A
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

***** 64-bit VM: **********************************************************
org.opendaylight.yangtools.yang.model.api.SchemaPath object internals:
 OFFSET  SIZE                                                   TYPE DESCRIPTION                               VALUE
      0    16                                                        (object header)                           N/A
     16     4                                                    int SchemaPath.hash                           N/A
     20     4                                                        (alignment/padding gap)                  
     24     8   org.opendaylight.yangtools.yang.model.api.SchemaPath SchemaPath.parent                         N/A
     32     8           org.opendaylight.yangtools.yang.common.QName SchemaPath.qname                          N/A
     40     8                com.google.common.collect.ImmutableList SchemaPath.legacyPath                     N/A
Instance size: 48 bytes
Space losses: 4 bytes internal + 0 bytes external = 4 bytes total

***** 64-bit VM, compressed references enabled: ***************************
org.opendaylight.yangtools.yang.model.api.SchemaPath object internals:
 OFFSET  SIZE                                                   TYPE DESCRIPTION                               VALUE
      0    12                                                        (object header)                           N/A
     12     4                                                    int SchemaPath.hash                           N/A
     16     4   org.opendaylight.yangtools.yang.model.api.SchemaPath SchemaPath.parent                         N/A
     20     4           org.opendaylight.yangtools.yang.common.QName SchemaPath.qname                          N/A
     24     4                com.google.common.collect.ImmutableList SchemaPath.legacyPath                     N/A
     28     4                                                        (loss due to the next object alignment)
Instance size: 32 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total

***** 64-bit VM, compressed references enabled, 16-byte align: ************
org.opendaylight.yangtools.yang.model.api.SchemaPath object internals:
 OFFSET  SIZE                                                   TYPE DESCRIPTION                               VALUE
      0    12                                                        (object header)                           N/A
     12     4                                                    int SchemaPath.hash                           N/A
     16     4   org.opendaylight.yangtools.yang.model.api.SchemaPath SchemaPath.parent                         N/A
     20     4           org.opendaylight.yangtools.yang.common.QName SchemaPath.qname                          N/A
     24     4                com.google.common.collect.ImmutableList SchemaPath.legacyPath                     N/A
     28     4                                                        (loss due to the next object alignment)
Instance size: 32 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Losing either hash code or the legacy path would improve the situation by 16-25%, making SchemaContext a tad smaller.&lt;/p&gt;</description>
                <environment></environment>
        <key id="32359">YANGTOOLS-1076</key>
            <summary>Trim down SchemaPath size</summary>
                <type id="10001" iconUrl="https://jira.opendaylight.org/images/icons/issuetypes/story.svg">Story</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="rovarga">Robert Varga</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                    </labels>
                <created>Wed, 22 Jan 2020 14:08:12 +0000</created>
                <updated>Wed, 12 Feb 2020 12:02:01 +0000</updated>
                            <resolved>Wed, 12 Feb 2020 11:59:53 +0000</resolved>
                                                    <fixVersion>5.0.0</fixVersion>
                                    <component>parser</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="67688" author="rovarga" created="Wed, 22 Jan 2020 14:09:02 +0000"  >&lt;p&gt;SchemaNodes relying on hashCode()/equals() could ruin our efficiency here.&lt;/p&gt;</comment>
                            <comment id="67689" author="rovarga" created="Wed, 22 Jan 2020 14:11:49 +0000"  >&lt;p&gt;For legacyPath we can most probably create some sort of backwards/forwards collection, similar to what we are doing for PathArguments in YangInstanceIdentifier. The hashCode cache can probably go, as we do not really expect it to be looked up anymore &#8211; aside from UsesNode, which will need to be taught some other trick to track its refines.&lt;/p&gt;</comment>
                            <comment id="67839" author="rovarga" created="Wed, 12 Feb 2020 12:01:15 +0000"  >&lt;p&gt;The resulting layout looks like this:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;***** 32-bit VM: **********************************************************
org.opendaylight.yangtools.yang.model.api.SchemaPath object internals:
 OFFSET  SIZE                                                   TYPE DESCRIPTION                               VALUE
      0     8                                                        (object header)                           N/A
      8     4                                                    int SchemaPath.hash                           N/A
     12     4   org.opendaylight.yangtools.yang.model.api.SchemaPath SchemaPath.parent                         N/A
     16     4           org.opendaylight.yangtools.yang.common.QName SchemaPath.qname                          N/A
     20     4                                                        (loss due to the next object alignment)
Instance size: 24 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total

***** 64-bit VM: **********************************************************
org.opendaylight.yangtools.yang.model.api.SchemaPath object internals:
 OFFSET  SIZE                                                   TYPE DESCRIPTION                               VALUE
      0    16                                                        (object header)                           N/A
     16     4                                                    int SchemaPath.hash                           N/A
     20     4                                                        (alignment/padding gap)                  
     24     8   org.opendaylight.yangtools.yang.model.api.SchemaPath SchemaPath.parent                         N/A
     32     8           org.opendaylight.yangtools.yang.common.QName SchemaPath.qname                          N/A
Instance size: 40 bytes
Space losses: 4 bytes internal + 0 bytes external = 4 bytes total

***** 64-bit VM, compressed references enabled: ***************************
org.opendaylight.yangtools.yang.model.api.SchemaPath object internals:
 OFFSET  SIZE                                                   TYPE DESCRIPTION                               VALUE
      0    12                                                        (object header)                           N/A
     12     4                                                    int SchemaPath.hash                           N/A
     16     4   org.opendaylight.yangtools.yang.model.api.SchemaPath SchemaPath.parent                         N/A
     20     4           org.opendaylight.yangtools.yang.common.QName SchemaPath.qname                          N/A
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

***** 64-bit VM, compressed references enabled, 16-byte align: ************
org.opendaylight.yangtools.yang.model.api.SchemaPath object internals:
 OFFSET  SIZE                                                   TYPE DESCRIPTION                               VALUE
      0    12                                                        (object header)                           N/A
     12     4                                                    int SchemaPath.hash                           N/A
     16     4   org.opendaylight.yangtools.yang.model.api.SchemaPath SchemaPath.parent                         N/A
     20     4           org.opendaylight.yangtools.yang.common.QName SchemaPath.qname                          N/A
     24     8                                                        (loss due to the next object alignment)
Instance size: 32 bytes
Space losses: 0 bytes internal + 8 bytes external = 8 bytes total
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&#160;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="23181">YANGTOOLS-761</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10002" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>YANGTOOLS-1066</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03qwv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>