Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Start und End-Zeit sind gleich

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

für die Zeitmessung der Programmlaufzeit eines Programms versuche ich über ein Date-Objekt die Start und die End-Zeit des Programms zu speichern und am Ende voneinander zu subtrahieren.

public class TestTime {


	private long startTime;

	private long endTime;


	private Date d = new Date();


	public void startTimer()

	{		

		startTime = d.getTime();

	}


	public long endTimer()

	{

		endTime = d.getTime();


		long endurance = endTime - startTime;


		return endurance;

	}


}

Start und Endzeit sind jedoch immer gleich! Auch wenn ich in der Implementierung der Methoden zwischen den beiden Aufrufen ein Thread.sleep(2000) setze. Woran kann das liegen?

Danke und gruß,

Benny

Versuchs mal mit

startTime = new Date().getTime();
und
endTime = new Date().getTime();

Aus der API-Dokumentation:

Date()

Allocates a Date object and initializes it so that it represents the time at which it was allocated, measured to the nearest millisecond.

Ist wahrscheinlich mehr eine Glaubensfrage aber zum Messen von Programmlaufzeiten würde ich eher System.currentTimeMillis() verwenden.

Einfach deshalb damit man nicht für jeden "Schiss" komplexe Objekte erzeugt. Ist wahrscheinlich in der heutigfen Zeit sowieso kein Problem mehr aber einfach eine Sache der Sauberkeit.

Hallo,

ich habe gerade den Thread gelesen und habe hierzu noch eine Frage.

Ich kann mit der Antwort der API Dokumentation nichts anfangen und versuche das mal in meinen eigenen Worten zu schildern, falls das nicht richtig ist wäre es super wenn da jemand Licht ins dunkel biringt.

Also durch

private Date d = new Date();
wird ein Objekt d erstellt und mit
startTime = d.getTime();

wird von startTime auf d referenziert.(Aus VB kenn ich das als ByRef)

Wenn sich also d ändert (d.getTime()) dann wird auch der Wert in startTime geändert(ist ja kein Wert sondern nur eine Referenz).

Ist ein = immer eine Referenzierung oder kann man in JAVA auch zwischen ByVal unde ByRef unterscheiden??

Danke

Servus,

Hallo,

[...]

Also durch

private Date d = new Date();
wird ein Objekt d erstellt und mit
startTime = d.getTime();

wird von startTime auf d referenziert.(Aus VB kenn ich das als ByRef)

Das stimmt nicht ganz. Du referenzierst hier nicht, da getTime() einen primitiven long zurückliefert. Und der wird by Value zurückgeliefert. Deshalb kannst Du d ändern, wie Du willst, Dein startTime bleibt gleich.

Ist ein = immer eine Referenzierung oder kann man in JAVA auch zwischen ByVal unde ByRef unterscheiden??

Danke

Bei Java werden primitive Datentypen (z.B. int, boolean, double) by Value übergeben, alle Objekte by Reference. Wenn Du also ein Objekt hast, das Du übergibst oder zuweist, dann übergibst Du lediglich eine Referenz auf das Objekt. Im oberen Beispiel ist d eine Referenz auf ein Date-Objekt. Das in d enthaltene time-Attribut ist ein Primitive, deshalb wird es by Value verarbeitet.

Ich hoffe, das hilft Dir weiter.

Peter

Hy kingofbrain,

jetzt kapier ich es nicht mehr. Warum funktioniert dann das Beispiel von HopelessFrag nicht??

Hier werden doch die Werte by Value übergeben:confused:

Somit sollten doch die 2 Variablen verschiedene Werte haben.

Gruß

Aber die beiden "by value"-Werte kommen vom gleichen Objekt. Wird ein Date-Objekt initialisiert, hält es die Zeit "fest" und ändert sich nicht mehr. Egal, wie oft man getTime() aufruft und unabhängig davon, welcher Variablen getTime() zugewiesen wird.

Ahhhh Danke,

dann versteh ich jetzt auch den Auszug aus der API Dokumentation.

Hat also mit dem Object und der Zuweisung garnichts zu tun.

Vielen Dank

Ahhhh Danke,

dann versteh ich jetzt auch den Auszug aus der API Dokumentation.

Hat also mit dem Object und der Zuweisung garnichts zu tun.

Vielen Dank

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.