<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Mein Code ist zu langsam]]></title><description><![CDATA[<p>so lese ich eine Datei, wo die Daten von mehreren Channels gespeichert sind. Danach schereibe die Headers in einer einzigen Datei 'Headers.txt' und die Werte separat in Files Channnel_1.txt,Channnel_2.txt...</p>
<p>Das Problem ist, dass das Programm sehr sehr langsam ist...<br />
Ich habe 2MB große ASCII Dateien zu lesen.<br />
ich dachte STL ist hoch-optimiert.Ich habe das Gleiche im Matlab durchgeführt und alles läuft viel schneller. Also mein C++ Code ist nicht optimal geschrieben...</p>
<p>Hier ist mein Code und ich brauche Hilfe, um das Lesen und Schreiben der Dateien zu beschleunigen</p>
<pre><code>#include &lt;fstream&gt; 
#include &lt;sstream&gt;
#include &lt;iostream&gt;

using namespace std;

inline double stof(const string&amp; in)
{ return atof(in.c_str()); } 

int main() 
{
	vector&lt;double&gt; x;
	vector&lt;string&gt; s;
	vector&lt;int&gt; idx_channel;
	int idx_re;
	fstream gen_datei(&quot;Headers.txt&quot;,ios::out);
	ifstream infile( &quot;signale_kurz.txt&quot; );
	copy(istream_iterator&lt;string&gt;(infile),istream_iterator&lt;string&gt;(),back_inserter(s));

for(int i=0;i&lt;(int)s.size();++i) if((s[i].find(&quot;CHANNEL&quot;)!=string::npos))idx_channel.push_back(i);	
	//copy(idx_channel.begin(),idx_channel.end(),ostream_iterator&lt;int&gt;(cout, &quot; \n&quot;));	
	for(int i=0;i&lt;(int)idx_channel.size();++i)
	{		
		idx_re=idx_channel[i];		
		if(i&lt;(int)idx_channel.size()-1)	
		{
		while(idx_re&lt;idx_channel[i+1])
		{
				if(s[idx_re].find(&quot;START&quot;)!=string::npos)idx_re=idx_re+3;
				else if(s[idx_re].find(&quot;AU&quot;)!=string::npos)idx_re=idx_re+2;
				else if(s[idx_re].find(&quot;V&quot;)!=string::npos)idx_re=idx_re+2;
				else if(atof(s[idx_re].c_str())==0)idx_re++; 
				else break;
		}
		}
		else
		{
			while(idx_re&lt;s.size())
		{
				if(s[idx_re].find(&quot;START&quot;)!=string::npos)idx_re=idx_re+3;
				else if(s[idx_re].find(&quot;AU&quot;)!=string::npos)idx_re=idx_re+2;
				else if(s[idx_re].find(&quot;V&quot;)!=string::npos)idx_re=idx_re+2;
				else if(atof(s[idx_re].c_str())==0)idx_re++; 
				else break;
		}
		}

		if(i&lt;(int)idx_channel.size()-1)			
			transform(s.begin()+idx_re,s.begin()+idx_channel[i+1]-1,back_inserter(x),stof);
		else		
			transform(s.begin()+idx_re,s.end(),back_inserter(x),stof);

		stringstream filename;
		stringstream info_filename;
		filename&lt;&lt;&quot;Channel_&quot;&lt;&lt;i+1&lt;&lt;&quot;.txt&quot;;		
		fstream datei( filename.str().c_str(),ios::out);
		copy(x.begin(),x.end(),ostream_iterator&lt;double&gt;(datei,&quot;\n&quot;));
		if(i==0)
		{
		copy(s.begin(),s.begin()+idx_channel[0],ostream_iterator&lt;string&gt;(gen_datei,&quot;\n&quot;));
		copy(s.begin()+idx_channel[0],s.begin()+idx_re,ostream_iterator&lt;string&gt;(gen_datei,&quot;\n&quot;));
		}
		else
		copy(s.begin()+idx_channel[i],s.begin()+idx_re,ostream_iterator&lt;string&gt;(gen_datei,&quot;\n&quot;));
		x.clear();
		datei.close();
	}
	gen_datei.close();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/142531/mein-code-ist-zu-langsam</link><generator>RSS for Node</generator><lastBuildDate>Tue, 01 Sep 2026 21:04:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/142531.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Mar 2006 11:52:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mein Code ist zu langsam on Fri, 31 Mar 2006 11:52:50 GMT]]></title><description><![CDATA[<p>so lese ich eine Datei, wo die Daten von mehreren Channels gespeichert sind. Danach schereibe die Headers in einer einzigen Datei 'Headers.txt' und die Werte separat in Files Channnel_1.txt,Channnel_2.txt...</p>
<p>Das Problem ist, dass das Programm sehr sehr langsam ist...<br />
Ich habe 2MB große ASCII Dateien zu lesen.<br />
ich dachte STL ist hoch-optimiert.Ich habe das Gleiche im Matlab durchgeführt und alles läuft viel schneller. Also mein C++ Code ist nicht optimal geschrieben...</p>
<p>Hier ist mein Code und ich brauche Hilfe, um das Lesen und Schreiben der Dateien zu beschleunigen</p>
<pre><code>#include &lt;fstream&gt; 
#include &lt;sstream&gt;
#include &lt;iostream&gt;

using namespace std;

inline double stof(const string&amp; in)
{ return atof(in.c_str()); } 

int main() 
{
	vector&lt;double&gt; x;
	vector&lt;string&gt; s;
	vector&lt;int&gt; idx_channel;
	int idx_re;
	fstream gen_datei(&quot;Headers.txt&quot;,ios::out);
	ifstream infile( &quot;signale_kurz.txt&quot; );
	copy(istream_iterator&lt;string&gt;(infile),istream_iterator&lt;string&gt;(),back_inserter(s));

for(int i=0;i&lt;(int)s.size();++i) if((s[i].find(&quot;CHANNEL&quot;)!=string::npos))idx_channel.push_back(i);	
	//copy(idx_channel.begin(),idx_channel.end(),ostream_iterator&lt;int&gt;(cout, &quot; \n&quot;));	
	for(int i=0;i&lt;(int)idx_channel.size();++i)
	{		
		idx_re=idx_channel[i];		
		if(i&lt;(int)idx_channel.size()-1)	
		{
		while(idx_re&lt;idx_channel[i+1])
		{
				if(s[idx_re].find(&quot;START&quot;)!=string::npos)idx_re=idx_re+3;
				else if(s[idx_re].find(&quot;AU&quot;)!=string::npos)idx_re=idx_re+2;
				else if(s[idx_re].find(&quot;V&quot;)!=string::npos)idx_re=idx_re+2;
				else if(atof(s[idx_re].c_str())==0)idx_re++; 
				else break;
		}
		}
		else
		{
			while(idx_re&lt;s.size())
		{
				if(s[idx_re].find(&quot;START&quot;)!=string::npos)idx_re=idx_re+3;
				else if(s[idx_re].find(&quot;AU&quot;)!=string::npos)idx_re=idx_re+2;
				else if(s[idx_re].find(&quot;V&quot;)!=string::npos)idx_re=idx_re+2;
				else if(atof(s[idx_re].c_str())==0)idx_re++; 
				else break;
		}
		}

		if(i&lt;(int)idx_channel.size()-1)			
			transform(s.begin()+idx_re,s.begin()+idx_channel[i+1]-1,back_inserter(x),stof);
		else		
			transform(s.begin()+idx_re,s.end(),back_inserter(x),stof);

		stringstream filename;
		stringstream info_filename;
		filename&lt;&lt;&quot;Channel_&quot;&lt;&lt;i+1&lt;&lt;&quot;.txt&quot;;		
		fstream datei( filename.str().c_str(),ios::out);
		copy(x.begin(),x.end(),ostream_iterator&lt;double&gt;(datei,&quot;\n&quot;));
		if(i==0)
		{
		copy(s.begin(),s.begin()+idx_channel[0],ostream_iterator&lt;string&gt;(gen_datei,&quot;\n&quot;));
		copy(s.begin()+idx_channel[0],s.begin()+idx_re,ostream_iterator&lt;string&gt;(gen_datei,&quot;\n&quot;));
		}
		else
		copy(s.begin()+idx_channel[i],s.begin()+idx_re,ostream_iterator&lt;string&gt;(gen_datei,&quot;\n&quot;));
		x.clear();
		datei.close();
	}
	gen_datei.close();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1027916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027916</guid><dc:creator><![CDATA[carmen]]></dc:creator><pubDate>Fri, 31 Mar 2006 11:52:50 GMT</pubDate></item><item><title><![CDATA[Reply to Mein Code ist zu langsam on Fri, 31 Mar 2006 11:57:36 GMT]]></title><description><![CDATA[<p>Datein ein und auslesen dauert im Debug Modus ewig ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Also auf release stellen ...</p>
<p>Vieleicht liegts auch am Code ... habe ich mir jetzt nicht angeguckt ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027925</guid><dc:creator><![CDATA[Mortal2006]]></dc:creator><pubDate>Fri, 31 Mar 2006 11:57:36 GMT</pubDate></item><item><title><![CDATA[Reply to Mein Code ist zu langsam on Fri, 31 Mar 2006 12:11:23 GMT]]></title><description><![CDATA[<p>und wie stelle ich auf release ???<br />
Scuzi aber mir muss du ganz ins Detail erkären ich bin beim ABC...lernen...</p>
<p>Ich arbeite mit <a href="http://VisualStudio.NET" rel="nofollow">VisualStudio.NET</a> 2003 und ist ertelle immer eine Konsolenanwendung<br />
und ich lasse die laufen mit 'Start without debugging'(STRG+F5)<br />
Was soll ich anderes machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027934</guid><dc:creator><![CDATA[carmen]]></dc:creator><pubDate>Fri, 31 Mar 2006 12:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to Mein Code ist zu langsam on Fri, 31 Mar 2006 12:46:42 GMT]]></title><description><![CDATA[<p>oben in dem Steuerelement wo &quot;Debug&quot; steht auf &quot;Release&quot; um stellen<br />
btw. sowas liest man eig. im handbuch nach...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1027979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1027979</guid><dc:creator><![CDATA[.................]]></dc:creator><pubDate>Fri, 31 Mar 2006 12:46:42 GMT</pubDate></item></channel></rss>