<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Why is Tables/Concatenate so slow? in Discussions</title>
    <link>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/809759#M99100</link>
    <description>&lt;P&gt;You may have noticed the FILES "scripts" - they look quite innocent:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1730845773110.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/69884i4839912C43550EC4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_0-1730845773110.png" alt="hogi_0-1730845773110.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but concerning speed, they can be devastating:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_1-1730845938983.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/69885iA227D48DD4CCA453/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_1-1730845938983.png" alt="hogi_1-1730845938983.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt1 = new table("test",&amp;lt;&amp;lt; add rows(1), new column ("x",  set each value(1)));

t0=hptime();

Nmax=200;

for(i=1, i&amp;lt;100,i++,
filesN = As list(Index(1,Nmax)`);
filelist = transform each({i},filesN,Eval List({"myfile"||Char(i)||".txt", 1, 1}));
Eval (Eval Expr(
dt1 &amp;lt;&amp;lt; New Table Script(	"Files",Expr(filelist)	)
)));
time=(hptime()-t0)/1000000;
print("add files info: ", time);

dt2 = dt1 &amp;lt;&amp;lt; Subset( All rows, Selected columns only( 0 ) );

t0= hptime();
dt1 &amp;lt;&amp;lt; Concatenate( dt2);

time=(hptime()-t0)/1000000;
print("concat 2 files: ", time);&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 05 Nov 2024 22:32:32 GMT</pubDate>
    <dc:creator>hogi</dc:creator>
    <dc:date>2024-11-05T22:32:32Z</dc:date>
    <item>
      <title>Why is Tables/Concatenate so slow?</title>
      <link>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/809748#M99094</link>
      <description>&lt;P&gt;Has this ever happened to you?&lt;BR /&gt;Sometimes it takes a very long time for Tables/Concatenate to finish merging two tables.&lt;/P&gt;&lt;P&gt;More than a minute for just a few columns and some 100k rows.&lt;/P&gt;&lt;P&gt;What could be the reason?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 05 Nov 2024 20:56:54 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/809748#M99094</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2024-11-05T20:56:54Z</dc:date>
    </item>
    <item>
      <title>Re: Why is Tables/Concatenate so slow?</title>
      <link>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/809750#M99095</link>
      <description>&lt;P&gt;I was wondering if it's because of the character columns - or because of the new compact columns (to compute the logic in the background).&lt;BR /&gt;Is it much faster to merge 2x the same table - instead of merging to "different" tables?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;no - no - no&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt1 = new table("test",&amp;lt;&amp;lt; add rows(500000));
for(I=1, i&amp;lt;=20, i++,
dt1 &amp;lt;&amp;lt; new column ("x", Character, set each value(Hex(random Integer(1000000))));
);
for(I=1, i&amp;lt;=20, i++,
dt1 &amp;lt;&amp;lt; new column ("y", Character,Compact set each value(Hex(random Integer(1000))));
);

dt2 = dt1 &amp;lt;&amp;lt; Subset( All rows, Selected columns only( 0 ) );

t0= hptime();
dt1 &amp;lt;&amp;lt; Concatenate(	dt1);

time=(hptime()-t0)/1000000;
print("concat same file: ", time);

t0= hptime();
dt1 &amp;lt;&amp;lt; Concatenate( dt2);

time=(hptime()-t0)/1000000;
print("concat 2 files: ", time);&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 05 Nov 2024 21:11:28 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/809750#M99095</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2024-11-05T21:11:28Z</dc:date>
    </item>
    <item>
      <title>Re: Why is Tables/Concatenate so slow?</title>
      <link>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/809759#M99100</link>
      <description>&lt;P&gt;You may have noticed the FILES "scripts" - they look quite innocent:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1730845773110.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/69884i4839912C43550EC4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_0-1730845773110.png" alt="hogi_0-1730845773110.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but concerning speed, they can be devastating:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_1-1730845938983.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/69885iA227D48DD4CCA453/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_1-1730845938983.png" alt="hogi_1-1730845938983.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt1 = new table("test",&amp;lt;&amp;lt; add rows(1), new column ("x",  set each value(1)));

t0=hptime();

Nmax=200;

for(i=1, i&amp;lt;100,i++,
filesN = As list(Index(1,Nmax)`);
filelist = transform each({i},filesN,Eval List({"myfile"||Char(i)||".txt", 1, 1}));
Eval (Eval Expr(
dt1 &amp;lt;&amp;lt; New Table Script(	"Files",Expr(filelist)	)
)));
time=(hptime()-t0)/1000000;
print("add files info: ", time);

dt2 = dt1 &amp;lt;&amp;lt; Subset( All rows, Selected columns only( 0 ) );

t0= hptime();
dt1 &amp;lt;&amp;lt; Concatenate( dt2);

time=(hptime()-t0)/1000000;
print("concat 2 files: ", time);&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 05 Nov 2024 22:32:32 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/809759#M99100</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2024-11-05T22:32:32Z</dc:date>
    </item>
    <item>
      <title>Re: Why is Tables/Concatenate so slow?</title>
      <link>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/809764#M99102</link>
      <description>&lt;P&gt;So from time to time, either delete the &lt;STRONG&gt;&lt;EM&gt;Files&lt;/EM&gt; &lt;/STRONG&gt;scripts - &lt;U&gt;or merge them into one script *)&lt;/U&gt;&lt;/P&gt;&lt;P&gt;This will speed up the Concatenate step by orders of magnitude.&lt;BR /&gt;&lt;BR /&gt;Even more important: if you trigger the Update manually:&lt;BR /&gt;With the new Preview Tab, the strange "processing" has to be done EVERY time again and again:&lt;BR /&gt;1) when the Concatenate menu opens&lt;/P&gt;&lt;P&gt;2) when tables are added via &lt;STRONG&gt;Add&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;3) after clicking on &lt;STRONG&gt;OK&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;This video illustrates the problem - to make it not extremely boring, I sped it up&amp;nbsp; by reducing the &lt;FONT face="courier new,courier"&gt;for&lt;/FONT&gt; loop to 50:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;div class="lia-vid-container video-embed-center"&gt;&lt;div id="lia-vid-6364460852112w770h540r815" class="lia-video-brightcove-player-container"&gt;&lt;video-js data-video-id="6364460852112" data-account="6058004218001" data-player="default" data-embed="default" class="vjs-fluid" controls="" data-application-id="" style="width: 100%; height: 100%;"&gt;&lt;/video-js&gt;&lt;/div&gt;&lt;script src="https://players.brightcove.net/6058004218001/default_default/index.min.js"&gt;&lt;/script&gt;&lt;script&gt;(function() {  var wrapper = document.getElementById('lia-vid-6364460852112w770h540r815');  var videoEl = wrapper ? wrapper.querySelector('video-js') : null;  if (videoEl) {     if (window.videojs) {       window.videojs(videoEl).ready(function() {         this.on('loadedmetadata', function() {           this.el().querySelectorAll('.vjs-load-progress div[data-start]').forEach(function(bar) {             bar.setAttribute('role', 'presentation');             bar.setAttribute('aria-hidden', 'true');           });         });       });     }  }})();&lt;/script&gt;&lt;a class="video-embed-link" href="https://community.jmp.com/t5/video/gallerypage/video-id/6364460852112"&gt;(view in My Videos)&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;*) almost surprising: the same content in the table scripts - but orders of magnitude faster:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt1 = new table("test",&amp;lt;&amp;lt; add rows(1), new column ("x",  set each value(1)));

t0=hptime();

Nmax=200;

for(i=1, i&amp;lt;100,i++,
filesN = As list(Index(1,Nmax)`);
filelist = transform each({i},filesN,Eval List({"myfile"||Char(i)||".txt", 1, 1}));
Eval (Eval Expr(
dt1 &amp;lt;&amp;lt; New Table Script(	"Files",Expr(filelist)	)
)));
time=(hptime()-t0)/1000000;
print("add files info: ", time);

//merge the table scripts 
merged Script = dt1 &amp;lt;&amp;lt; get script();
dt1 &amp;lt;&amp;lt; delete scripts(dt1 &amp;lt;&amp;lt; Get Table Script Names);
Eval(eval Expr(dt1 &amp;lt;&amp;lt; new  table script ("merged",Expr(Name Expr(merged Script))))); 

dt2 = dt1 &amp;lt;&amp;lt; Subset( All rows, Selected columns only( 0 ) );

t0= hptime();
dt1 &amp;lt;&amp;lt; Concatenate( dt2);

time=(hptime()-t0)/1000000;
print("concat 2 files - merged scripts: ", time);&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1731170639823.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/70004iDEB961CA540EDCF6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_0-1731170639823.png" alt="hogi_0-1731170639823.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;vs before:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_1-1731170652993.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/70005iF4C34B5FB8F7D25A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="hogi_1-1731170652993.png" alt="hogi_1-1731170652993.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-SPOILER&gt;&lt;div class="lia-vid-container video-embed-center"&gt;&lt;div id="lia-vid-6364462318112w678h540r705" class="lia-video-brightcove-player-container"&gt;&lt;video-js data-video-id="6364462318112" data-account="6058004218001" data-player="default" data-embed="default" class="vjs-fluid" controls="" data-application-id="" style="width: 100%; height: 100%;"&gt;&lt;/video-js&gt;&lt;/div&gt;&lt;script src="https://players.brightcove.net/6058004218001/default_default/index.min.js"&gt;&lt;/script&gt;&lt;script&gt;(function() {  var wrapper = document.getElementById('lia-vid-6364462318112w678h540r705');  var videoEl = wrapper ? wrapper.querySelector('video-js') : null;  if (videoEl) {     if (window.videojs) {       window.videojs(videoEl).ready(function() {         this.on('loadedmetadata', function() {           this.el().querySelectorAll('.vjs-load-progress div[data-start]').forEach(function(bar) {             bar.setAttribute('role', 'presentation');             bar.setAttribute('aria-hidden', 'true');           });         });       });     }  }})();&lt;/script&gt;&lt;a class="video-embed-link" href="https://community.jmp.com/t5/video/gallerypage/video-id/6364462318112"&gt;(view in My Videos)&lt;/a&gt;&lt;/div&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI-SPOILER&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 09 Nov 2024 17:12:11 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/809764#M99102</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2024-11-09T17:12:11Z</dc:date>
    </item>
    <item>
      <title>Re: Why is Tables/Concatenate so slow?</title>
      <link>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/810208#M99211</link>
      <description>&lt;P&gt;according to JMP support, the bad performance is no bug, but&amp;nbsp;as expected: TS-00173141&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Comparing all the text in all the script in the tables being concatenated takes a long time.&amp;nbsp; It is a lot of information to compare.&amp;nbsp; It is not surprising that the concatenation is so much slower with the large number of table scripts your example tables have.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 09 Nov 2024 16:33:50 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/810208#M99211</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2024-11-09T16:33:50Z</dc:date>
    </item>
    <item>
      <title>Re: Why is Tables/Concatenate so slow?</title>
      <link>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/901588#M106077</link>
      <description>&lt;P&gt;seems to be fixed in JMP19:&lt;BR /&gt;&lt;LI-MESSAGE title="Tiny Traps in Jmp and JSL" uid="702685" url="https://community.jmp.com/t5/Discussions/Tiny-Traps-in-Jmp-and-JSL/m-p/702685#U702685" discussion_style_icon_css="lia-mention-container-editor-message lia-img-icon-forum-thread lia-fa-icon lia-fa-forum lia-fa-thread lia-fa"&gt;&lt;/LI-MESSAGE&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 18 Sep 2025 10:47:03 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/Why-is-Tables-Concatenate-so-slow/m-p/901588#M106077</guid>
      <dc:creator>hogi</dc:creator>
      <dc:date>2025-09-18T10:47:03Z</dc:date>
    </item>
  </channel>
</rss>

