<!-- 
RSS generated by JIRA (4.4#649-r158309) at Sat May 18 13:08:01 CDT 2013

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 add field=key&field=summary to the URL of your request.
For example:
http://dev.clojure.org/jira/si/jira.issueviews:issue-xml/CLJS-326/CLJS-326.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Clojure JIRA</title>
    <link>http://dev.clojure.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>4.4</version>
        <build-number>649</build-number>
        <build-date>25-07-2011</build-date>
    </build-info>

<item>
            <title>[CLJS-326] hash-set and PersistentHashSet/fromArray == faster set construction</title>
                <link>http://dev.clojure.org/jira/browse/CLJS-326</link>
                <project id="10040" key="CLJS">ClojureScript</project>
                        <description>&lt;p&gt;As discussed with mmarczyk in irc, the attached patch implements Clojure&apos;s hash-set function and modifies the compiler to create sets using a new fromArray static method. To test these, I created three new benchmarks. Here&apos;s before and after benchmark results:&lt;/p&gt;

&lt;p&gt;$ time ./script/benchmark | grep &apos;#{&apos;&lt;br/&gt;
[], #{}, 100000 runs, 77 msecs&lt;br/&gt;
[], #{1 2 3}, 100000 runs, 582 msecs&lt;br/&gt;
[coll #{1 2 3}], (conj coll 4), 100000 runs, 104 msecs&lt;br/&gt;
[], #{}, 100000 runs, 740 msecs&lt;br/&gt;
[], #{1 2 3}, 100000 runs, 1809 msecs&lt;br/&gt;
[coll #{1 2 3}], (conj coll 4), 100000 runs, 221 msecs&lt;br/&gt;
[], #{}, 100000 runs, 281 msecs&lt;br/&gt;
[], #{1 2 3}, 100000 runs, 1310 msecs&lt;br/&gt;
[coll #{1 2 3}], (conj coll 4), 100000 runs, 288 msecs&lt;br/&gt;
./script/benchmark  109.41s user 3.82s system 127% cpu 1:28.96 total&lt;/p&gt;

&lt;p&gt;$ time ./script/benchmark | grep &apos;#{&apos;&lt;br/&gt;
[], #{}, 100000 runs, 1 msecs&lt;br/&gt;
[], #{1 2 3}, 100000 runs, 333 msecs&lt;br/&gt;
[coll #{1 2 3}], (conj coll 4), 100000 runs, 100 msecs&lt;br/&gt;
[], #{}, 100000 runs, 1 msecs&lt;br/&gt;
[], #{1 2 3}, 100000 runs, 1670 msecs&lt;br/&gt;
[coll #{1 2 3}], (conj coll 4), 100000 runs, 325 msecs&lt;br/&gt;
[], #{}, 100000 runs, 1 msecs&lt;br/&gt;
[], #{1 2 3}, 100000 runs, 689 msecs&lt;br/&gt;
[coll #{1 2 3}], (conj coll 4), 100000 runs, 321 msecs&lt;br/&gt;
./script/benchmark  103.94s user 4.89s system 108% cpu 1:39.88 total&lt;br/&gt;
grep &apos;#{&apos;  0.00s user 0.00s system 0% cpu 1:39.85 total&lt;/p&gt;</description>
                <environment></environment>
            <key id="15554">CLJS-326</key>
            <summary>hash-set and PersistentHashSet/fromArray == faster set construction</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="bbloom">Brandon Bloom</reporter>
                        <labels>
                        <label>patch</label>
                        <label>patch,</label>
                    </labels>
                <created>Sun, 24 Jun 2012 20:01:16 -0500</created>
                <updated>Mon, 25 Jun 2012 06:33:47 -0500</updated>
                    <resolved>Mon, 25 Jun 2012 06:33:47 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="28896" author="bbloom" created="Sun, 24 Jun 2012 20:47:21 -0500"  >&lt;p&gt;Slightly better patch with the EMPTY case&lt;/p&gt;</comment>
                    <comment id="28899" author="dnolen" created="Sun, 24 Jun 2012 22:13:25 -0500"  >&lt;p&gt;Getting a weird error when I try to run the tests. Also can we squash the commits? Thanks!&lt;/p&gt;</comment>
                    <comment id="28900" author="bbloom" created="Sun, 24 Jun 2012 22:24:08 -0500"  >&lt;p&gt;Squashed patch.&lt;/p&gt;</comment>
                    <comment id="28901" author="bbloom" created="Sun, 24 Jun 2012 22:28:42 -0500"  >&lt;p&gt;Squashed and rebased on latest master. Is the rule no-multi-commit patches? Or simply just not for such small patches? In this case, I made and tested each each change in sequence. I also wanted the benchmarks to have a different sha1, so that the perf improvement would show up in the graphs. I&apos;ll try to provide squashed patches in the future.&lt;/p&gt;

&lt;p&gt;What weird error are you getting? Works for me :-P&lt;/p&gt;</comment>
                    <comment id="28902" author="bbloom" created="Sun, 24 Jun 2012 22:33:08 -0500"  >&lt;p&gt;Updating 2nd benchmark in description to include the EMPTY optimization&lt;/p&gt;</comment>
                    <comment id="28903" author="dnolen" created="Mon, 25 Jun 2012 06:33:47 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/clojurescript/commit/c60df78e2fd318109a9338a87277c11565b506ae&quot;&gt;http://github.com/clojure/clojurescript/commit/c60df78e2fd318109a9338a87277c11565b506ae&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11345" name="making-sets.patch" size="4523" author="bbloom" created="Sun, 24 Jun 2012 20:47:21 -0500" />
                    <attachment id="11346" name="making-sets-squashed.patch" size="3826" author="bbloom" created="Sun, 24 Jun 2012 22:24:08 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

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