Laden...

Forenbeiträge von pdelvo Ingesamt 1.346 Beiträge

04.06.2009 - 16:38 Uhr

Directory.GetFiles("ordner","pattern(Datei.exe)",SearchOption.AllDirectories);

Gruß pdelvo

04.06.2009 - 15:26 Uhr

Ich benutze switch nur, wenn ich genau weiß, dass ich es später nicht um solche Sachen

int.Parse(wert) > 5

erweitern möchte. Sonst wird es nähmlich lästig.

Gruß pdelvo

03.06.2009 - 21:22 Uhr

die DrawLine Methode hat eine Überladung, in der du einen PointF übergeben kannst. Mit diesem kannst du genauer Zeichnen. Dann musst du aber auch die Schleife anpassen und einen float als Zählervariable nehmen.

Gruß pdelvo

03.06.2009 - 20:34 Uhr

Kleines Update. Ich habe aufgrund einer Idee eines Freundes(danke floste) angefangen komplett neu anzufangen und mit einem int zu arbeiten. Ich habe mir vorgenommen zwei Versionen meiner Klasse zu machen, eine für 32 und eine für 64bit Systeme. Da ein 64bit System 64Bits gleichzeitig verarbeiten kann, sollte dort ein long noch schneller sein.

Ich habe mal eben einen mini Performancevergleich gemacht. Ich habe 200000000 mal int.MaxValue + int.MaxValue gerrechnet. Hier die Ergebnisse:

Alte Methode: 00:02:23.1268049
Neue Methode: 00:00:22.3488477

Wie man sieht, habe ich die alte Methode mit mehr als 2min geschlagen. Die nächste Version wird also ein wenig schneller 8)

PS: Und da bei der Multiplikation der Karatsuba-Algorithmus eingesetzt wird, sollte ich da auch noch ein wenig Performance rausholen können.

Gruß pdelvo

03.06.2009 - 14:50 Uhr

Hallo,

Erstmal danke für deine Ausführliche Antwort.

Wieso nimmst du Byte? Wird Byte von der .NET-Plattform besonders gut unterstützt? Ansonsten würde ich eher zu int tendieren. Da die Schleifendurchgänge deutlich reduziert werden. Bei sehr große Zahle wirkt sich das durch aus positiv aus.

Ich habe byte genommen, da dieser ziemlich klein ist und da er völlig ausreicht. Das mit dem int kann ich mal verswuchen einzubauen. Danke für den hinweiß.

In meiner Implementierung habe ich zusätzlich die Anzahl der Bits gespeichert, da diese Information für den Platzbedarf einer Addition, Sub., Multiplikation und Division her halten muss. Zudem ist es schöner mit unsigned zu arbeiten. Die Einführung eines Vorzeichen durch z.B. ein Enum ist viel schöner und man kann z.B. *-1 schnell durchführen

Das ist eine gute Idee und lässt sich (hoffentlich) leicht umsetzen. Ich schaue mal.

Wie gut ist der C#-Compiler? Ist es nicht besser, Variablen außerhalb der Schleife zu deklarieren. Das entlasstet den GC doch enorm, oder? Macht das der C#-Compiler von MS automatisch?

Ich habe meine Assembly mal durch den Reflektor gejagt und habe gesehen, dass er das nicht optimiert. Werde ich also von Hand machen müssen.

Zudem würde ich den Konstruktor vereinfachen und einen weiteren Integer einführen, der die genutzte Array-Länge angibt. Ist es in C# möglich, ein Array nachträglich auf die Größe N zu verkleinern, ala realloc in C?
Ansonsten könnte man eine Mehtode normalize() einführen, die derartige Aufgaben ausführt und nicht von der Klasse intern benutzt wird. Sie sollte eher für länger benutzt Objekte interessant sein.

Da hast du genau die langsamste stelle gefunden - Der Konstruktor . Ich habe alles immer durch einen Profiler laufen lassen und der hat diese Stelle als Performancekiller enttarnt. Werde ich verbessern.

Ich werde mal gucken, ob ich die Basis umstelle.

Die Multiplikation ist elegant gelösst, wie hoch ist der Aufwand? Hast du dir den Schönhagen-Strasser-Alg. und dem vom Fürer angeschaut? Toom-Cook ist etwas älter, aber sehr oft umgesetzt worden. Ich habe das Verfahren aus der Grundschule 😄 genommen. Das ist erstaunlich schnell. Werde aber mal gucken ob sich das noch weiter beschleunigen lässt.
Die Division sieht genail aus. Werd ich mir dieses Wochenende vielleicht etwas genauer betrachten. Ist diese Methode effektiver als die DividedByRemainder? Die Division ist, ähhh, nur so umgesetzt, dass es überhaupt eine gibt. Sie ist zwar super langsam, funktioniert aber. Da muss ich aber nochmal ran.
BigNumber 0, 1, 2, 8, 10, 16 ; -1 sollten als Konstanten zur Verfügung stehen Jo mache ich.

Nochmal danke für deinen sehr ausführlichen Post.

Auf einem CPU-Kern? Ist der algorithmus Multi-Core fähig? Ich hatte ihn nur auf einem Kern laufen. Das lässt sich aber durch Multithreading um einiges beschleunigen. Das sollte bei der Fakultät sehr einfach gehen.
Ich will dich nicht demotivieren in deinen Optimierungsversuchen, aber gib einfach als Formatstring "R" beim BigInteger.ToString(string format) an und schon bekommst du auch die voll ausgeschriebene Zahl 😃. Standardmäßig gibt BigInteger.ToString nur die 50 ersten Ziffern an, weil bei so großen Zahlen die nachfolgenden meist weniger interessieren, da gehts dann mehr um Größenordnungen statt um konkrete Werte.

Misst. So ein Pech.

Dann ist es halt was für Leute, die noch kein Framework 4.0 haben 😄

Und deine eigene ToString Implementierung solltest auch mal überdenken. Nen StringBuilder statt nur immer Stringadditionen würde auch einiges sparen an Laufzeit bei großen Zahlen. Wird gemacht.

Gruß pdelvo

02.06.2009 - 21:36 Uhr

DirectX wird unterstützt. In form von WPF, XNA, SlimDX, etc.

Ich glaube du musst dich präziser ausdrücken, was du mit DirectX meinst.

Gruß pdelvo

02.06.2009 - 21:21 Uhr

Hier ein Beispielprojekt. Ich habe nun auch den Source angehangen. Vieleicht kann mir jemand ein paar Tips geben um noch mehr performance rauszukizeln.

EDIT: Ich habe gerade mal das Projekt unter Release, direkt als 64bit Anwendung und ohne debuggen gestartet. Dann hat 20000! nurnoch 1,31min gedauert.
8)

Gruß pdelvo

02.06.2009 - 21:20 Uhr

Ein Update: Ich habe alles ein wenig Beschleunigt und berrechne die Fakultät aus 20000 nun in 8:19.

Gruß pdelvo

02.06.2009 - 12:18 Uhr

Sieh dir mal das Heronverfahren an. Mit diesem sollte das eigendlich ziemlich einfach sein. Warum sollst du nicht multiplizieren und dividieren?

Ich habe mal eine Methode geschrieben um die 2te Wurzel zu ziehen. Das kannst du aber imho leicht anpassen.

        public decimal Heron(decimal input)
        {
            if (input == 0)
                return 0;
            decimal x = 1;
            decimal y = input / x;
            decimal xbefor = 0;
            int i = 0;
            while (true)
            {
                x = (xbefor + y) / 2;
                y = input / x;
                if (xbefor == x)
                    break;
                xbefor = x;
                i++;
                
            }

            return x;
        }

Gruß pdelvo

01.06.2009 - 17:02 Uhr

Ich habe mir gerade BigInteger von Microsoft aus dem Framework 4.0 angesehen. Er berrechnet zwar 20000! in ein paar Sekunden. Raus kommt aber nur 1,8192063202303451348276417569E+77337, und nicht die ausgeschriebene Zahl.

Ich konnte die Fakultät mit meinem Programm ohne Probleme ausrechnen(Anhang)

Gruß pdelvo

31.05.2009 - 20:06 Uhr

Hier noch das Zip File.

Gruß pdelvo

31.05.2009 - 20:05 Uhr

Hallo

Ich möchte eine Komponente, die in ca. einem Tag arbeit entstand vorstellen.

Mit dieser ist es möglich die Grundrechenarten(+,-,* und /,) mit Zahlen mit riesigen Zahlen durchzuführen.

Zu der Performance.

Ich habe die Fakultät von 20000 in ca. 14min ausgerechnet. Ich finde das Ergebnis akzeptabel.

Die Klasse unterstützt nur Natürliche Zahlen.

Ich habe auch mal ein Beispielprojekt angehangen.

Gruß pdelvo

30.05.2009 - 22:47 Uhr

Du kannst dir ja auch was selber schreiben. Wird ja nicht sooo problematisch, wenn du vorher weißt, wieviele stellen du brauchst. dann kannst du das komma nach rechts verschieben, und brauchst so nicht mal dezimalzahlen. du kannst dir dann einen dateityp schreiben, der mit einer belibigen zahl von stellen auskommt.

Gruß pdelvo

30.05.2009 - 13:01 Uhr

Super Snippet!

👍

Gruß pdelvo

29.05.2009 - 22:01 Uhr

ein object hat immer eine ToString() methode. Und da jedes Objekt in .net von object ableitet, hat ein int eine TString Methode. Das ist aber Basiswissen.

[Hinweis] Wie poste ich richtig? Punkt 1.1.1

Gruß pdelvo

29.05.2009 - 14:57 Uhr

Warum braucht er dann überhaupt noch eine Form? Einfach eine Consolen Programm erstellen, und dann unter den Projekteinstellungen den Ausgabetyp auf Windowsanwendung stellen-fertig.

Gruß pdelvo

29.05.2009 - 14:26 Uhr

Ich habe vor ein paar Tagen mal was gefunden.
http://ajaxuploader.com/
Gruß pdelvo

28.05.2009 - 21:27 Uhr

Den habe ich schon ausprobiert. Ist eine 16bit Anwendung. Trotzdem danke.

Gruß pdelvo

28.05.2009 - 21:22 Uhr

Das hört sich super an. Die Beispiele sind auch klasse. Die BEER.exe ist lustig 😁

Ist zwar ziemlich einfach, funktioniert aber. Es gibt sogar extra 64bit Beispiele

Gruß pdelvo

28.05.2009 - 20:15 Uhr

Hallo,

ich habe mal eine ganz andere Frage. Kennt ihr eine Assembler IDE, welche unter einem Windows 7 64bit läuft. Ich finde keine Einzige. Ich habe keine Lust alles immer über eine Batch zu kompilieren. Leider finde ich nur in 16bit geschriebene Entwicklungsumgebungen. Die kacken natürlich ab:

[Window Title]
C:\Downloads_extracted\visualasm-0.9.0019.tar.gz.extracted\0.9.0019\VISASM9B.EXE

[Content]
Die Version dieser Datei ist nicht mit der ausgeführten Windows-Version kompatibel. Öffnen Sie die Systeminformationen des Computers, um zu überprüfen, ob eine x86-(32 Bit)- oder eine x64-(64 Bit)-Version des Programms erforderlich ist, und wenden Sie sich anschließend an den Herausgeber der Software.

[OK]

Ich hoffe es kennt einer eine Akzeptable.

Gruß pdelvo

26.05.2009 - 20:35 Uhr

Es wäre noch nett, wenn man das Thempo des 'Mitsingmoduses' ändern könnte. Die Lieder, die ich höre sind immer zu schnell. Da muss ich immer scrollen.

EDIT: Nochwas

Es gibt öfters Probleme beim parsen der Songliste. Da stehen dann wirre Wortteile drin. Und nochwas. Ich bekomme das Liad "Kennst du die Stars" von Bushido nicht angezeigt. Das gibt immer einen Fehler, obwohl ich es aus der Liste auswähle.Da ein (feat. Oliver Pocher) dahinter (Er singt mit). Der Einträg ist also auf 3 Einträge verteilt worden.(Ich weiß, komischer Musikgeschmack 😉 )

Gruß pdelvo

26.05.2009 - 19:16 Uhr

Ladt dir mal 'Live Http Headers' für den FF herunter. Darin kannst du dir die Reqquest und Response Header ansehen. Da kannst du gucken, ob der Cookie überhaupt versandt wird. Ich vermute, dass das ';' stört, da dies eigendlich mehrere Cookies voneinander trennt.

Gruß pdelvo

26.05.2009 - 15:57 Uhr

Du musst halt das object umwandeln. also (int)deinobject.

Gruß pdelvo

26.05.2009 - 15:39 Uhr

Beeil dich bitte mit den Umlauten. Manche Lieder sind nicht mehr zu lesen.

: „Hi Puppe“

😁
(Soll 'HI Puppe' heißen)

Dann würde ich alles Multithreaded machen. Es ist nähmlich blöd, wenn die Anwendung beim Sucheneinfach hängen bleibt. Un ich würde mich über eine Suche freuen, bei der ich einfach den Titel eingebe. Das mache ich lieber.

Zu dem offline Modus: Ich fände das zwar klasse, aber ich weiß nicht, woher du die Texte dann bekommst. Ich weiß nicht ob das herunterlade und anbieten erlaubt ist.

Sonst aber super Projekt!
Weiter so!

Gruß pdelvo

26.05.2009 - 07:16 Uhr

In den Datei-Eigenschaften steht "Copyright Microsoft"

Lass mich raten. Hast du Seven? 😁 Da schreibt er das automatisch rein.
Ich würde das noch ändern. Einfach in den Einstellungen des Projektes auf Assemblyinformationen klicken. Da kannst du alles anpassen.

Gruß pdelvo

25.05.2009 - 15:28 Uhr

@HannesB

Für eine Figur eignet sich meiner Ansicht nach eine Klasse besser. Woher willst du wissen( ohne solche dummen sachen wie Enum.SchwarzKönig) zu welcher Farbe er gehört? Woher willst du wissen, an welcher Position er sich befindet?

Gruß pdelvo

25.05.2009 - 15:13 Uhr

Du musst die RETURNURL UrlEncoden(HttpServerUtility.UrlEncode). Dann, wenn du zu ihr navigieren willst musst du sie nurnoch decodieren(HttpServerUtility.UrlDecode).

Gruß pdelvo

25.05.2009 - 06:56 Uhr

Er installiert auch die 64bit Komponenten. Hab ich auch drauf.

Gruß pdelvo

24.05.2009 - 20:27 Uhr

Ich habe unter 2008 angefangen. Er erstellt irgendwie alle Projekte unter x86. Ich halte das für nicht sinnvoll.

Gruß pdelvo

24.05.2009 - 13:03 Uhr

Danke!

Ich habe es nicht umgestellt, aber die dll wurde als x86 kompiliert. Ich habe es auf Any CPU umgestellt, und dann lief es. Ist das ein Bug den man melden sollte? Normalerweise sollte das doch standardmässig auf Any CPU stehen, oder?

Gruß pdelvo

24.05.2009 - 11:24 Uhr

Hallo

Ich habe ein ziemlich dummes Problem. Ich entwickel in VS2010. Ich bringe den Fehler mit VS2010 in Verbindung, da ich ihn unter 2008 nie hatte.

Ich habe eine dll, welche eine Methode aus einer weiteren aufrufen soll. Diese zweite dll verweist auf eine dritte. Wenn ich auf die zweite dll zugreifen will, Kommt folgender Fehler(Die dritte dll heißt ServerAPI):

System.BadImageFormatException was unhandled
Message=Die Datei oder Assembly "ServerAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.
Source=Webserver
FileName=ServerAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
FusionLog==== Zustandsinformationen vor Bindung ===
LOG: Benutzer = Dennis-PC\Dennis
LOG: DisplayName = ServerAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///C:/Users/Dennis/Documents/Visual Studio 10/Projects/HTMLCP/Servertest/bin/Debug/
LOG: Ursprünglicher PrivatePath = NULL
Aufruf von Assembly : Webserver, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: Diese Bindung startet im default-Load-Kontext.
LOG: Es wurde keine Anwendungskonfigurationsdatei gefunden.
LOG: Die Computerkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config wird verwendet.
LOG: Die Richtlinie wird derzeit nicht auf den Verweis angewendet (private, benutzerdefinierte, teilweise oder pfadbasierte Assemblybindung)
LOG: Download von neuem URL file:///C:/Users/Dennis/Documents/Visual Studio 10/Projects/HTMLCP/Servertest/bin/Debug/ServerAPI.DLL.
ERR: Das Setup der Assembly konnte nicht abgeschlossen werden (hr = 0x8007000b). Die Suche wurde beendet.

StackTrace:
bei Webserver.WebServerClient.Process()
bei Webserver.Server.ServerLoop() in c:\Users\Dennis\Documents\Visual Studio 10\Projects\HTMLCP\Webserver\Server.cs:Zeile 156.
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart()
InnerException:

Ich kompiliere das Projekt mit dem Framework 3.5. Ich habe wirklich keine Ahnung, warum dieser Fehler auftritt. Außerdem finde ich, dass sich die Beschreibung ein wenig wiederspricht.

Die Datei oder Assembly "ServerAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.

Was denn jetzt? Findet er die Datei nicht, oder hat sie das falsche Format? Und wenn es das falsche Format ist, Wieso?

Ich hoffe ich habe mich Verständlich ausgedrückt.

Gruß pdelvo

22.05.2009 - 14:38 Uhr

Ja. Dann sollte eigendlich Default funktionieren.

Gruß pdelvo

22.05.2009 - 13:42 Uhr

Öffne die Textdatei mal im Editor. Geh dann mal auf Speichern Unter. In diesem Dialog solltest du unten die Kodierung sehen.

Gruß pdelvo

22.05.2009 - 13:31 Uhr

Ich habe öfters das Problem, dass es beim erstellen eines WPF Projektes hängen bleibt. Es lässt sich nicht mehr bedienen. Auch nach 5min warten geht es nicht weiter. Es hilft nurnoch VS neuzustarten. Dann läuft es wieder flüssig.

Gruß pdelvo

21.05.2009 - 18:12 Uhr

Prüfe den SelectedIndex. Wenn dieser -1 ist, ist nichts ausgewählt. Dann kannst du den Button deaktivieren.

Gruß pdelvo

21.05.2009 - 15:48 Uhr

Ich ´habe es auf jeden Fall nicht im menu abgestellt. Ich kann mich aber noch daran erinner, dass ich so einen Breakpoint in einer F# anwendung gesetzt habe. Ich habe mir die Team Suite runtergeladen. Ist ja jetzt egal. Ich weiß ja jetzt wie ich sie anstelle.

Gruß pdelvo

21.05.2009 - 13:37 Uhr

Das funzt auch. Ich finde das aber mit der Maus praktischer, Da ich sowieso um mir den Inhalt der Variablen anzusehen(Das geht endlich auch in F# 😁 ), die Maus benutze. Ich habe dann immer eine Hand auf der Tastatur, und eine auf der Maus. Das habe ich mir so angewöhnt. Ist aber wohl Geschmacksache.

Gruß pdelvo

21.05.2009 - 13:18 Uhr

Ich habe die Einstellung gefunden. In den Optionen=>Text Editor=>General=>Indicator Margin.

Gruß pdelvo

21.05.2009 - 13:11 Uhr

Ich habe eine ganz banale Frage. Wie erstelle ich am besten Breakpoints in VS2010. In VS2008 musste man einfach auf den Rand im Codeeditor klicken. Dieser fehlt aber in der 10er Version. Ich habe alles ausprobiert, aber keine Lösung gefunden, außer über die menuleiste, oder das Kontextmenu den Breakpoint hinzuzufügen. Das finde ich aber sehr unpraktisch. Weiß vieleicht jemand, wo ich den Rand einschalten kann? oder muss man irgendwo anders klicken?

Gruß pdelvo

20.05.2009 - 23:02 Uhr

Vieleicht räumt Vista die auch weg, wenn der Platz gebraucht wird. Ungenutzer Speicherplatz hat schließlich keinen Sinn.

Gruß pdelvo

20.05.2009 - 21:07 Uhr

Schuldigung für den falschen Link. Hier der richtige. Steht auch beta1 drüber
http://www.microsoft.com/downloads/details.aspx?FamilyID=85520793-68fc-4361-a8b6-dc2cff49c8d2&displaylang=en

Gruß pdelvo

20.05.2009 - 19:39 Uhr

Ich bin mir ziemlich sicher. ihr könnt ja warten, bis ich es durch meine leider viel zu langsame leitung runtergeladen habe. ich kann ja dann bescheid sagen, ob es der richtige ist.

Gruß pdelvo

19.05.2009 - 20:03 Uhr

Einfach nur Dictionary<string, Currenypair>

Gruß pdelvo

18.05.2009 - 18:41 Uhr
  1. [Hinweis] Wie poste ich richtig? Punkt 6

Erstelle dir eine Klassenbibliothek. In diese kommen alle zu serialisierenden Klassen rein. Dann fügst du zu beiden Projekten den Verweiß hinzu. Dann sollte es funktionieren. Der hintergrund ist dieser: Du serialisierst ein Objekt, welches in der Assembly Accesspoint definiert ist. Beim deserialisieren, versucht der BinaryFormatter solch ein Objekt zu erzeugen. Das gibt es aber nicht.

Gruß pdelvo

17.05.2009 - 14:36 Uhr

Ich finde es auch genial, dass man direkt Gleichungen und Therme lösen lassen kann. Man bekommt sogar einen Funktionsgraphen gezeichnet.

Gruß pdelvo

16.05.2009 - 16:43 Uhr

Du nutzt also Managed DX. Ich empfehle dir, wenn du die möglichkeit hast zu wechseln, auf XNA, oder SlimDX umzusteigen. Managed DX wird nicht mehr weiterentwickelt.

Ansonsten würde ich die Textur transparent machen, oder einen Pixelshader schreiben, der dies übernimmt.

Gruß pdelvo

16.05.2009 - 15:31 Uhr

Welche Technik nutzt du? Xna? SlimDX? Managed DX? etc?

Ist die Textur transparent?

Gruß pdelvo

16.05.2009 - 13:29 Uhr

Hier mal die neuste Version. Ich habe auch einen neuen Screenshot angehangen.

Ich freue mich immer über Feedback.

Gruß pdelvo

16.05.2009 - 11:09 Uhr

Ich kenn auch noch eine: MathAndMore.dll einfach mal googlen. Die kann auch Therme grafisch anzeigen.

Gruß pdelvo