Seite 1 von 2

Systemanford. eines selbstgeschrieb. Programmes herausfinden

Verfasst: 07.10.2005 00:44
von AND51
Ertsmal: Der komplette Titel heißt "Systemanforderungen eines selbstgeschriebenen Programmes herausfinden", da die lange Version nicht in das eingabefeld passte.

Hallo!
Ich habe eine Frage: Wie kann ich herausfinden, welche Anforderungen ein selbstgeschriebenes PB-Programm mindestens braucht?
Ich weiß nur, dass es DirectX 7 (bzw. DX3 auf NT4.0 Systemen) braucht. Und den festplattenspeicherplatz kann ich herausfiden, weil ich ja nur gucken muss, wie groß die Exe-Datei und die benötigten Dateien sind.

Aber woher weiß ich wie viel MHz und Arbeitsspeicher ein Programm braucht? Mein PC hat 577 MHz und 512 MB RAM. Ich kann doch nicht zu allen Programmen schreiben: "Dieses Programm läuft auf jeden Fall ab 577 MHz und 512 MB Arbeitsspeicher"
Und ich habe auch keine Lust zu schreiben: "Wenn dieses Programm einwandfrei läuft, hat ihr System die Anforderungen bereits erfüllt :-) ".

Also, kann mir jemand helfen? Danke!

Verfasst: 07.10.2005 00:59
von Ynnus
Also soweit ich weiß gibt es keine Regel oder Formel wonach man die Anforderungen ausrechnen kann. Wenn es keine speziefischen Dinge wie Shader sind die besondere Grafikkarten benötigen muss man eigentlich ausprobieren auf welchen System es noch gut läuft. Sprich, du vervielfältigst dein Programm und lässt es auf mehreren Konfigurationen ausprobieren. Dabei geht man logischer Weise möglichst weit runter mit dem System, so tief, dass es gerade noch so passabel läuft. Das könnte man dann als Minimalsystem festlegen.

Was Ram betrifft, da kann man wenigstens teilweise Angaben zu machen. Einfach mal den Taskmanager öffnen und dann kann man einsehen wie viel Ram ein Programm benötigt und wie viel Speicher noch frei ist. Wenn du da immer im kleinen Bereich bist kannst du ja eine gewisse Grenze einordnen. Es gibt auch Programme die schonmal 100 - 200 MB Arbeitsspeicher beanspruchen (z.B. Bildbearbeitungsprogramme) und da kann man schon mindestens mal 256 MB RAM vorraussetzen. Aber ansonsten eben austesten auf Systemen mit weniger Ram und sehen wie sich die Ladezeiten und der freie Speicher auswirken. Letztlich ist es auch teilweise subjektiv, was als passable Leistung betrachtet wird. Mancher spielt etwa Spielchen nur wenn sie absolut flüssig mit mindestens 33 Frames oder so haben, andere sind mit > 25 schon sehr zufrieden. Wieder andere hauen lieber die Details weiter rauf und spielen dann eben nur mit 20 FPS.

Verfasst: 07.10.2005 19:46
von AND51
Hm... Ja stimmt, was du da sagst.
Nur das Problem ist, ich habe aus meinem Bekanntenkreis / Freundeskreis den sag ich mal "schlechtesten PC". 577 MHz und 512 MB RAM lassen mich manchmal sogar mitverfolgen, wie in einem kleinem 500x400 großem Fenster, vollgestopft mit ca. 30 bis 35 Gadgets, diese nacheinander erst geladen werden; das könnte man sich ungefähr so vorstellen:

CreateGadgetList(WIindowID())
Delay(5)
ButtonGadget( ...<Parameter>... )
Delay(5)
ButtonGadget( ...<Parameter>... )
Delay(5)
ButtonGadget( ...<Parameter>... )
usw.... etc....

Und das jedesmal beim Minimieren und anschließendem Wiederherstellen oder beim ersten Laden des Fensters...

Aber ich denke, man kann diese regel aufstellen, oder?
"Solange es ein kleines Freewareprogramm ist mit max. 500 bis 1.000 Zeilen, Speicherarm, dann läuft es auf jedem PC flüssig."

Verfasst: 07.10.2005 20:07
von PMV
Nach dem erstellen des Fensters ist eine schleife wie

Code: Alles auswählen

While WindowEvent() : Wend
hilfreich, zumindest in den meisten fällen. Da ich nicht weis, wie deine Hauptschleife aufgebaut ist, kannste das ja mal versuchen. Nach dem hinzufügen des letzten Gadgets das einfach mal hinschreiben :D , eigentlich sollte das auch bei 577 Mhz schneller gehen :wink:

Hm, ich hab z.B. nur 2. PCs zu hause, wo ich programme testen kann. Einen mit 333 Mhz (Win 98 ) und meinen 1,8+ (XP) ... da wäre dann z.B. eine möglichkeit, die Com hier im Forum mal zu fragen, ob die das nicht testen möchte :D . Ansonnsten wie schon gesagt wurde Taskmanager mal auf machen und schauen, was so für das Programm angezeigt wird <)

Und auch kleine Programme können einiges verschlingen :mrgreen: ... aber als Programmierer lernt man mit der Zeit, was wie viel Ressorce usw. benötigt und kann dann relativ gut einschätzen, was die Systemanforderungen sein könnten :D

MFG PMV

Verfasst: 07.10.2005 20:27
von AND51
PMV hat geschrieben:Nach dem erstellen des Fensters ist eine schleife wie

Code: Alles auswählen

While WindowEvent() : Wend
hilfreich, zumindest in den meisten fällen.
Davon habe ich schon mal etwas gehört. Kannst du mir das bitte genauer erklären? Das hat doch irgendetwas mit dem Abrbeiten er events zu tun... aber wozu? wenn ich auf einen knopf drücke, wird doch nur 1 event zurückgegeben? und selbst wenn... schadet es, wenn ich deine schleife nicht einfüge? also was ich wissen möchte, ist der möglichst genaue sinn dieser schleife.

das ich die community fragen kann ob sie meine software nicht testen will, ist gar keine so schlechte idee! aber wo hin posten? und was wenn das jeder täte oder ich mit allen programmen, die ich habe?

mfg, AND51

Verfasst: 07.10.2005 21:05
von hardfalcon
@AND51: es ist ganz einfach. Sowas macht man nach Gefühl. Ausserdem nimmt das eh niemand wirklich genau. Du sagst einfach, es LÄUFT SICHER auf meinem Rechner, und der hat 500Mhz und 512MB RAM. Und die minimalen Systemvorraussetzungen errechnet man sich "Pi mal Daumen". Sowas muss man als Programmierer mit der Zeit als "Instinkt" entwickeln. Das ist da nicht anders als mit dem eigentlichen Programmieren oder Hacken... :allright: Ich drück dir auf jedenfall die Daumen, dass du es richtig ausrechnest... :lol:

Verfasst: 07.10.2005 21:08
von AND51
danke, hardfalcon. hast recht, deine version leuchtet ein.
und vllt. kann ich ja wirllich mal die PB-Crew hier an Bord fragen, ob sie das programm mal testen können.

Verfasst: 07.10.2005 21:11
von hardfalcon
Wenn du dir das "Pi mal Daumen ausrechnen" noch nicht richtig zutraust, kannst du ja bei "uns" (der PB-Community) in die Lehrer gehen:
- du rechnest dir aus, was deine Progrnosen wären, wieviel das Programm braucht, und versuchst, esirgendwie zu begründen
- wir testen das Programm, und "verbessern" dich
So lernt man es am Schnellsten, würd ich sagen... :allright:

Verfasst: 07.10.2005 22:00
von AND51
okay, wird gemacht danke für die hilfe!

Verfasst: 08.10.2005 16:31
von PMV
Ich hab mich mit den Windows noch nie wirklich beschäftigt und werd es vermutlich auch nciht schnell tuen, bin ja lieber für Spiele *gg*.

Aber mach dir mal z.B. nen kleines beispielprogramm ... ich hab so eins:

Code: Alles auswählen

OpenWindow(0, 0, 0, 400, 400, #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget, "Test")
CreateGadgetList(WindowID())
AdvancedGadgetEvents(#True)
  ButtonGadget(0, 10, 10, 100, 20, "Button")
  StringGadget(1, 10, 30, 100, 20, "String")

Repeat
WindowEvent = WaitWindowEvent()
If WindowEvent
  Debug Num
  Num+1
EndIf

Select WindowEvent
  Case #PB_Event_ActivateWindow
    Debug "#PB_Event_ActivateWindow"
  Case  #PB_Event_CloseWindow
    Debug "#PB_Event_CloseWindow"
  Case #PB_Event_Gadget
    Debug "#PB_Event_Gadget"
  Case #PB_Event_Menu
    Debug "#PB_Event_Menu"
  Case #PB_Event_MoveWindow
    Debug "#PB_Event_MoveWindow"
  Case #PB_Event_Repaint
    Debug "#PB_Event_Repaint"
  Case #PB_Event_SizeWindow
    Debug "#PB_Event_SizeWindow"
  Case #PB_Event_SysTray
    Debug "#PB_Event_SysTray"
EndSelect

Select EventType()
  Case #PB_EventType_Change
    Debug "#PB_EventType_Change"
  Case #PB_EventType_CloseItem
    Debug "#PB_EventType_CloseItem"
  Case #PB_EventType_Focus
    Debug "#PB_EventType_Focus"
  Case #PB_EventType_LeftClick
    Debug "#PB_EventType_LeftClick"
  Case #PB_EventType_LeftDoubleClick
    Debug "#PB_EventType_LeftDoubleClick"
  Case #PB_EventType_LostFocus
    Debug "#PB_EventType_LostFocus"
  Case #PB_EventType_ReturnKey
    Debug "#PB_EventType_ReturnKey"
  Case #PB_EventType_RightClick
    Debug "#PB_EventType_RightClick"
  Case #PB_EventType_RightDoubleClick
    Debug "#PB_EventType_RightDoubleClick"
  Case #PB_EventType_SizeItem
    Debug "#PB_EventType_SizeItem"
EndSelect
    
Until WindowEvent = #PB_Event_CloseWindow
Jedes mal wenn es jetzt irgen ein Event gibt, dann wird die Variable Num um einen hoch gezählt und ausgegeben. Du kannst ja ganz oben mal ein Fenster erstellen lassen und dann schauen :wink: .

Aber folgendes:
Bei einigen Befehlen (keine Ahnung welche) wartet Windows auf eine Bestätigung oder gar auf Antwort. Das heißt so lange also bei einem bestimmten Event dein Programm nicht antwortet, so lange wird Windows auch hier nicht weiter dein Fenster aktualisieren ... PB nimmt dir zwar das antworten auf solche Events ab, aber dafür muss immer noch WindowEvent() bzw WaitWindowEvent() aufgerufen werden. Vorallem (oder nur?) beim erstellen eines Fensters mit Gadgets ist dem so. Du sagst zwar mit den Befehlen, das Gadgets irgned wo auf dem Fenster sein sollen. Aber erst nach abarbeiten der Events werden die Gadgets alle von Windows dargestellt. Deswegen ist es auch z.B. ratsam bei größeren Fensters, das Fenster erst unsichtbar zu erstellen, dann die Gadgets usw. drauf zu legen, dann die oben von mir genannte WindowEvent() Schleife durchlaufen und erst dann das Fenster sichtbar zu machen. Dann sollte gegeben sein, das dein Fenster auf praktisch allen PCs erst dargestellt wird, wenn es fertig aufgebaut wurde.

Hoffe das war jetzt alles so weit richtig, fals da irgend was net war ist, bitte umbedingt berichtigen, möchte ja nix falsches erzählen und selber lernen is auch granz praktisch :mrgreen:

Zum Thema Com zum Testen anstiften :wink: . Du machst einen Thread auf, gibt dafür das passende Unterforum, musst nur mal schauen was unter den Forennamen Kleingedruckt als erklärung steht :D . Stellst dein Programm vor, was es kann, wo für es ist usw. , schilderst dann, was du von der Com möchtest, einfaches Feedback, vielleicht Bugreports, wie hoch die FPS ist, usw. und postest natürlich dann noch den Downloadlink deines Programms.
Jetzt liegt es an der Com, ob das Programm vielleicht das interresse geweckt hat, ob man vielleicht dem Poster helfen möchte. Oder was auch sein kann, man bekommt überhaupt keine Antwort. Da hier keiner gezwungen wird isses ja Frei, ob man demjenigen Helfen möchte, oder ob man sich für das Programm intereziert oder nicht. Daher sollte man beim vorstellen auch schauen, das man gut erklärt, was das für ein Programm ist :wink: .

Und wenn du tausende von Programmen hier Posten würdest, dann würdest du vermutlich zum einen auf die meisten garkeine Antwort bekommen und sicherlich wäre der ein oder andere dann sogar abgeneigt, überhaupt deinen Thread zu lesen :wink: . Es sei denn es sind geniale Programme ... dann kann sich auch das gegenteil einstellen. Wie auch immer, wir sind hier frei. Es gibt natürlich Regeln die beachtet werden müssen, aber die sind eh allgemein gebräuchlich und recht logisch :D (nur das jemand hier nicht das Wort "frei" missversteht *gg*)

MFG PMV