Waktu yang dibutuhkan untuk mencetak angka

21

Ringkasan

Tulis sebuah program atau fungsi, yang tidak mengambil input apa pun, dan menampilkan semua bilangan bulat, antara -1000 dan 1000 dalam urutan naik, ke stdout, satu per baris, seperti ini:

-1000
-999
-998
-997
...

Dan setelah itu Anda perlu mencetak waktu yang diperlukan untuk mencetak angka-angka ini, atau waktu dari awal pelaksanaan program dalam milidetik (jika perlu, juga dapat berisi beberapa hal lain, misalnya: waktu yang diambil: xxxms ok). Ini bisa berupa pelampung, atau bilangan bulat (jika Anda mencetak bilangan bulat, Anda harus membulatkan ke yang terdekat).

Kode contoh

using System;
using System.Diagnostics;
class P
{
    static void Main(string[] args)
    {
        Stopwatch st = Stopwatch.StartNew();
        for (int i = -1000; i <= 1000; i++)
        {
            Console.WriteLine(i);
        }
        Console.WriteLine(st.ElapsedMilliseconds);      
    }
}

Batasan

Tidak ada celah standar

Info lainnya

Ini kode golf, jadi pengiriman terpendek menang.

Horváth Dávid
sumber
@GurupadMamadapur Tidak, maaf
Horváth Dávid
Mengapa? Saya pikir pada dasarnya untuk mencetak angka-angka itu setiap pernyataan terlibat dari awal program, kan?
Gurupad Mamadapur
1
@GupupadMamadapur Ok, Anda benar, saya akan mengedit pertanyaan sesuai.
Horváth Dávid
Bisakah program menunggu beberapa waktu dari awal, dan mencetak jumlah itu?
xnor
@ xnor Saya pikir, itu akan mengubah tantangan, dan karena sudah ada banyak jawaban untuk tantangan asli, saya akan mengatakan tidak.
Horváth Dávid

Jawaban:

9

MATL , 13 byte

1e3t_y&:!DZ`*

Cobalah online!

       % Implicitly start timer
1e3    % Push 1000
       % STACK: 1000
t_     % Duplicate, negate
       % STACK: 1000, -1000
y      % Duplicate second-top number
       % STACK: 1000, -1000, 1000
&:     % Two-input range
       % STACK: 1000, [-1000, 999, ..., 1000]
!      % Transpose into column vector
       % STACK: 1000, [-1000; 999; ...; 1000]
D      % Display
       % STACK: 1000
Z`     % Push timer value, say t
       % STACK: 1000, t
*      % Multiply
       % STACK: 1000*t
       % Implicitly display
Luis Mendo
sumber
2
Sangat bagus! Pintar untuk melaksanakan: Implicitly start timer. Apakah itu ada sejak hari pertama, atau apakah itu hasil dari tantangan sebelumnya?
Stewie Griffin
@StewieGriffin Bukan dari hari pertama. Saya menambahkannya pada 13 Jul 2016 , mungkin setelah harus mengaktifkan secara eksplisit dalam beberapa tantangan
Luis Mendo
9

Oktaf, 46 43 36 30 23 byte

tic;(-1e3:1e3)',toc*1e3

Ini akan mencetak:

ans =

  -1000
   -999
   -998
   -997
   -996
   -995

Jika Anda tidak suka ans =, maka kami harus menambahkan 6 byte tambahan untuk disp:

tic;disp((-1e3:1e3)'),toc*1e3

Menyimpan banyak byte berkat beberapa pengingat dari rahnema1.

Penjelasan:

tic;                              % Starts timer
         (-1e3:1e3)'              % A vertical vector -1000 ... 1000
    disp((-1e3:1e3)'),            % Display this vector
                      toc*1e3     % Stop the timer and output the time in milliseconds
Stewie Griffin
sumber
8

JavaScript, 60 byte

(c=console).time();for(i=~1e3;i++<1e3;c.log(i));c.timeEnd();

Untuk mendapatkan semua peristiwa dicatat, Anda harus menggunakan skrip dari konsol pengembang (jika tidak, log dihapus setelah jumlah tertentu dari mereka).

nicael
sumber
i=~1e3untuk menyimpan byte :-)
ETHproductions
7

CJam , 18 byte

es2001{1e3-n}/es\-

Cobalah online!

Bagaimana itu bekerja

es                  Push the current time (milliseconds since epoch) on the stack.
  2001{     }/      For each integer X from 0 to 2000:
       1e3-           Subtract 1000 from X.
           n          Print with a newline.
              es    Push the current time on the stack.
                \-  Swap and subtract.
Dennis
sumber
7

Python 3.5, 80 77 73 byte

import time
*map(print,range(-1000,1001)),
print(time.process_time()*1e3)

Solusi sebelumnya melibatkan penggunaan timeitdan time.time(), mereka lebih besar.

Sedihnya, time.process_time()diperkenalkan di python 3.3.

Terima kasih kepada Dennis karena telah menghemat 4 byte!

Gurupad Mamadapur
sumber
5

Bash (+ coreutils), 41, 49, 46, 44, 42 byte

EDIT:

  • Refactored untuk menggunakan Bash-builtin (waktu), untuk mengatasi masalah presisi @ Dennis;
  • Dikurangi oleh 3 byte, dengan memanfaatkan Bash 4+ |&untuk pengalihan stderr;
  • Disimpan 2 byte lebih banyak dengan mengganti seq -1000 1000dengan seq -1e3 1e3(Terima kasih @ Dennis!);
  • -2 byte dengan menghapus backslash yang tidak perlu, dan menggunakan presisi default (Thx @Dennis!).

Golf

TIMEFORMAT=%R*1000;(time seq -1e3 1e3)|&bc

Cobalah secara Online!

Sidenote

Menggunakan utilitas "waktu" coreutils, bukannya Bash-builtin, menghasilkan a 41, Solusi 35 byte:

\time -f "%e*1000" seq -1e3 1e3|&bc

"\" ada di sini untuk membuat bash memanggil perintah sebenarnya, bukan builtin.

Sayangnya presisi waktu coreutils hanya 1/100, yang telah menimbulkan kekhawatiran jika itu adalah solusi yang valid.

zeppelin
sumber
4

R, 42 byte

system.time(cat(-1e3:1e3,sep="\n"))[3]*1e3

Ini akan dicetak

.
.
.
998
999
1000
elapsed 
     60 

Untuk menghapus elapsed, diperlukan dua byte tambahan:

system.time(cat(-1e3:1e3,sep="\n"))[[3]]*1e3
Sven Hohenstein
sumber
4

Utilitas Bash + GNU, 43

  • Disimpan 2 byte berkat @Dennis
  • Disimpan 5 byte berkat @zeppelin
c=date\ +%s%3N
s=`$c`
seq -1e3 1e3
$c-$s|bc

The dateperintah memberikan jumlah detik sejak zaman bersambung dengan nanodetik saat ini. Perintah ini dijalankan sebelum dan sesudah. bcmengambil perbedaan dan mencetak.

Cobalah online .


Saya berharap untuk melakukan ini selama 17:

time seq -1e3 1e3

Tetapi keluaran waktu memberi lebih dari yang kita butuhkan:

real    0m0.004s
user    0m0.000s
sys 0m0.004s
Trauma Digital
sumber
1
Anda dapat menyimpan dua byte dengan menggantinya 1000dengan 1e3.
Dennis
"Tapi hasil waktu memberi ..." ... mungkin kamu harus bash bash.
H Walters
1
Anda mungkin dapat menyimpan beberapa byte, dengan menangkap date dengan ms presisi langsung, seperti ini: date +%s%3N.
zeppelin
4

JavaScript (ES6), 63 59 byte

for(c=console.log,i=~1e3;i<1e3;c(++i));c(performance.now())

George Reith
sumber
Bagus. Anda dapat menghemat tiga byte dengan menghapus spasi new (d=Date)dan mulai dari -1000:for(t=new(d=Date),c=console.log,i=~1e3;i<1e3;c(++i));c(new d-t)
ETHproduk
@ ETHproduk terima kasih :) ~1e3ini adalah sentuhan yang bagus.
George Reith
1
Dalam output potongan adalah dari hanya 952untuk 1000mengapa demikian?
Gurupad Mamadapur
@GurupadMamadapur Output snippet terbatas hingga 50 baris. (Atau lebih tepatnya: 50 baris terakhir.)
Arnauld
1
@IsmaelMiguel Luar Biasa tidak menyadari performance.now()atau Performanceantarmuka sama sekali
George Reith
3

R, 66 byte

x=proc.time();for(i in -1e3:1e3)cat(i,"\n");(proc.time()-x)[3]*1e3

Mungkin bukan yang terpendek tetapi berhasil.

Billywob
sumber
Bisakah proc.timedisimpan dalam variabel? t=proc.time;x=t(); ...
Annan
3

Mathematica, 51 byte

p[1*^3#]&@@AbsoluteTiming@Array[p=Print,2001,-1*^3]

Penjelasan

Array[p=Print,2001,-1*^3]

Simpan Printfungsi di p. Cetak angka 2001, mulai dari -1000, bertambah 1.

AbsoluteTiming@ ...

Temukan total waktu yang telah berlalu dalam hitungan detik.

p[1*^3#]&@@ ...

Lipat gandakan dengan 1000 (detik -> milidetik) dan p( Print) itu.

JungHwan Min
sumber
Argh, kau mengalahkanku 3 menit! :) Apakah Anda yakin Timingtidak memenuhi deskripsi masalah (sedikit kabur) juga AbsoluteTiming?
Greg Martin
2
@GregMartin Timingmenampilkan waktu CPU dan tidak termasuk waktu yang diambil oleh ujung depan. Itu adalah. waktu yang dibutuhkan untuk menambah penghitung masuk Arraydihitung, tetapi waktu yang dibutuhkan untuk menampilkan angka-angka itu di layar tidak dihitung. Efek ini dapat dilihat pada contoh sederhana ini: Timing@Print@3memberikan 0 detik, tetapi AbsoluteTiming@Print@3tidak.
JungHwan Min
3

PHP, 110 70 byte

masih agak panjang; tetapi disimpan 38 dengan petunjuk @ AlexHowansky, dan dua lagi dengan 1e3dan ~1e3.

for($t=($m=microtime)($i=~1e3);$i++<1e3;)echo"$i
";echo($m(1)-$t)*1e3;

cetakan mengapung. Jalankan dengan -r.

Titus
sumber
2
Anda dapat melewati microtime () nilai yang benar dan itu akan mengembalikan float secara langsung, Anda tidak harus menambahkan string.
Alex Howansky
-30% dengan petunjuk itu. Saya berharap saya bisa melakukan sepuluh upvotes pada komentar Anda. : D
Titus
Sangat menyedihkan bagaimana PHP tidak memiliki sesuatu yang mengembalikan waktu dalam milidetik. Seperti yang dimiliki Javascript. Saya tidak bisa menyarankan perbaikan. Sekecil yang bisa didapat. Sudah selesai dilakukan dengan baik!
Ismael Miguel
@ IsmaelMiguel Saya pikir JavaScript tidak memiliki mikrodetik. :)
Titus
@Titus Yang saya maksudkan adalah bahwa tanggal Javascript semuanya ditangani dalam milidetik, sedangkan PHP hanya memiliki detik atau mikrodetik.
Ismael Miguel
3

Powershell, 27 Bytes

$1=date;-1e3..1e3;(date)-$1

Terima kasih kepada AdmBorkBork karena menunjukkan bahwa keluaran default verbose dapat diterima dalam tantangan.

Hasil keluaran seperti:

994
995
996
997
998
999
1000

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 5
Milliseconds      : 679
Ticks             : 56799255
TotalDays         : 6.57398784722222E-05
TotalHours        : 0.00157775708333333
TotalMinutes      : 0.094665425
TotalSeconds      : 5.6799255
TotalMilliseconds : 5679.9255

untuk hasil yang lebih berisi hanya milidetik, gunakan jawaban asli:

$1=date;-1e3..1e3;((date)-$1).TotalMilliseconds

Hemat waktu sebelum $ 1, cetak ke stdout secara otomatis, lalu dapatkan waktu antara awal dan akhir eksekusi.

colsw
sumber
Anda bisa saja memipangkan rentang ke oh( Out-Host) yang akan mem-bypass fakta yang Measure-Commandmenangkap pipa. Contoh di TIO
AdmBorkBork
@ AdmBorkBork intinya adalah bahwa saya tidak berpikir itu akan menghemat byte, kecuali saya kehilangan sesuatu.
colsw
Measure-Command{-1e3..1e3|oh}adalah 29 byte. Tentu, ini mencetak hal-hal tambahan berkat Measure-Command, tetapi tantangannya secara eksplisit menyatakan tidak apa-apa.
AdmBorkBork
Sebenarnya melewatkan titik di mana Anda dapat mencetak data lain, pencipta tantangan mungkin perlu mengatakan apakah output Measure-Command yang sangat jelas dapat diterima. juga $1=date;-1e3..1e3;(date)-$12 byte lebih pendek dari opsi ukuran-perintah di sana,
colsw
Oh benar, haha. Golf yang bagus.
AdmBorkBork
2

Perl 6 , 45 byte

.put for -($_=1e3)..$_;put (now -INIT now)*$_

Cobalah

Diperluas:

# print the values

.put             # print with trailing newline ( method call on 「$_」 )

for              # for each of the following
                 # ( temporarily sets 「$_」 to the value )

-(
  $_ = 1e3       # store 「Num(1000)」 in 「$_」
)
..               # inclusive Range object
$_;

# print the time elapsed

put              # print with trailing newline

(now - INIT now) # Duration object that numifies to elapsed seconds
* $_             # times 1000 to bring it to milliseconds

# The 「INIT」 phaser runs code (the second 「now」) immediately
# as the program starts.

# There is no otherwise unrelated set-up in this code so this is a
# reliable indicator of the amount of time it takes to print the values.
Brad Gilbert b2gills
sumber
2

J , 22 byte

1e3*timex'echo,.i:1e3'

Cobalah online!

timexadalah builtin yang mengeksekusi string dan mengembalikan waktu yang dibutuhkan untuk mengevaluasinya dalam hitungan detik. String membentuk rentang [-1000, 1000] yang digunakan i:, lalu mengelompokkannya menggunakan ,., dan mencetaknya menggunakan builtin echo.

mil
sumber
2

Pyth , 18 15 14 byte

j}_J^T3J;*.d1J

Coba di sini!

Penjelasan

Ini mirip dengan jawaban python saya.

    J ^ T3 Atur J ke 1000
  } _ Daftar J mulai dari -1000 hingga 1000
j Bergabung dengan daftar dengan baris baru dan cetak secara implisit
         ; *. d1J Waktu cetak sejak pelaksanaan program dalam milidetik

Suntingan :

  • Terima kasih fryamtheeggman untuk menghemat 3 byte!
  • Terima kasih kepada busukxuan karena telah menghemat satu byte.
Gurupad Mamadapur
sumber
Saya mencoba ini, 14 byte, tidak yakin apakah itu berfungsi dengan benar. Anda perlu menambahkan baris baru di awal program. pyth.herokuapp.com/?code=%0AM%7D_J%5ET3J%2a.d1J&debug=0
busukxuan
2

Noodel , 17 13 byte

13 byte

Mencoba pendekatan yang sedikit berbeda dan menyimpan 4 byte.

ƇQjȥḶGQɱ⁻Ñ€Ƈ⁻

Cobalah:)

Bagaimana itu bekerja

Ƈ             # Pushes on the amount of milliseconds passed since 01/01/1970.

 Qjȥ          # Pushes 2001 onto the stack.
 Qj           # Pushes on the string "Qj"
   ȥ          # Converts the string into a number as base 98.

    ḶGQɱ⁻Ñ€   # Loops 2001 times printing -1000 to 1000.
    Ḷ         # Consumes the 2001 and loops the following code 2001 times.
     GQ       # Pushes on the string "GQ"
       ɱ      # Pushes on the current counter of the loop (i)
        ⁻     # Subtracts (i - "GQ") since i is a number, the "GQ" is converted to a number which will fail.
              # So, Noodel will treat the string as a base 98 number producing (i - 1000). 
         Ñ    # Consume what is on the top of the stack pushing it to the screen followed by a new line.
          €   # The end of the loop.

           Ƈ⁻ # Calculates the duration of execution.
           Ƈ  # Pushes on the amount of milliseconds passed since 01/01/1970.
            ⁻ # Pushes on (end - start)

17 byte

ƇGQȥḋɲṡ×2Ḷñ⁺1€ÑƇ⁻

Cobalah:)

Bagaimana itu bekerja

Ƈ                 # Pushes on the amount of milliseconds passed since 01/01/1970.

 GQȥḋɲṡ×2         # Used to create the range of numbers to be printed.
 GQ               # Pushes on the string "GQ".
   ȥ              # Converts the string into number as if it were a base 98 number. (which is 1000)
    ḋ             # Duplicates the number and pushes it onto the stack. 
     ɲ            # Since the item on top is already a number, makes the number negative (random thing I threw in at the very beginning when made the langauge and totally forgot it was there)
      ṡ           # Swaps the first two items on the stack placing 1000 on top.
       ×2         # Doubles 1000 producing... 2000

         Ḷñ⁺1€Ñ   # Prints all of the numbers from -1000 to 1000.
         Ḷ        # Consumes the 2000 to loop the following code that many times (now -1000 is on the top).
          ñ       # Prints the value on top of the stack followed by a new line.
           ⁺1     # Increment the value on top of the stack by 1.
             €    # End of the loop.
              Ñ   # Since 1000 is still not printed, this consumes 1000 and prints it followed by a new line.

               Ƈ⁻ # Calculates the number of milliseconds to execute program.
               Ƈ  # Pushes on the amount of milliseconds passed since 01/01/1970.
                ⁻ # Pushes on (end - start) in milliseconds.
                  # At the end, the top of the stack is pushed to the screen.

Cuplikan menggunakan nilai -4 hingga 4 agar tidak terlalu lama untuk diselesaikan.

<div id="noodel" code="ƇFȥḶAɱ⁻Ñ€Ƈ⁻" input="" cols="10" rows="10"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>

tkellehe
sumber
Apakah Anda membuat bahasa ini setelah atau sebelum tantangan?
Rɪᴋᴇʀ
@EasterlyIrk, sebelum :)
tkellehe
2

TI-Basic, 22 byte

startTmr
For(A,-ᴇ3,ᴇ3
Disp A
End
startTmr-Ans
  • Banyak perintah diwakili oleh token 1 atau 2 byte.

  • Diuji pada TI-84 CSE yang ditiru.

Julian Lachniet
sumber
2

Matlab, 16 23 Bytes

tic;(-1e3:1e3)'
toc*1e3

Sunting: Saya menyadari saya melanggar beberapa peraturan tantangan ini. Itu akan mengajari saya membaca skim tantangan larut malam. Saya juga sekarang menyadari bahwa jawaban yang dikoreksi hampir identik dengan solusi Oktaf, tetapi itulah kehidupan.

Mencetak setiap elemen dalam array ruang linear yang dibuat -1000: 1000 (tidak adanya; cetakan untuk konsol).

tic / toc merekam waktu dan toc mencetak waktu ke konsol dengan atau tanpa; . 1e3 diperlukan untuk mencetak dalam milidetik.

Owen Morgan
sumber
Benar sekali, solusi yang benar telah diedit.
Owen Morgan
2

Groovy, 75 73 byte

t=System.&nanoTime
s=t()
(-1000..1e3).each{println it}
print((t()-s)/1e6)

Terima kasih kepada jaxad0127 untuk menghemat 2 byte!

Coba di sini!

Gurupad Mamadapur
sumber
1
nanoTimedengan pembagian dengan 1e6 lebih pendek dari currentTimeMillis. Ini juga memberikan waktu fraksional.
jaxad0127
2

8 , 61 47 byte

Terima kasih kepada 8th_dev untuk peningkatan yang bagus (disimpan 14 byte)

d:msec ( . cr ) -1000 1000 loop d:msec swap - .

Ini akan mencetak semua angka bilangan bulat antara -1000 dan 1000 dalam urutan menaik dan waktu yang dibutuhkan (dalam milidetik) untuk mencetak angka-angka ini

-1000
-999
-998
-997
...
997
998
999
1000
4
Kekacauan Manor
sumber
1
Perlu dicatat bahwa menyarankan pengeditan untuk meningkatkan kode yang memenuhi syarat sebagai "destruktif". Saran untuk bermain golf harus diberikan sebagai komentar. Saya akan ping pengguna yang melakukannya jika saya bisa, tetapi saya tidak bisa. meta.codegolf.stackexchange.com/q/1615/34718
mbomb007
1
Saya tahu bahwa Anda menyetujuinya, yang baik-baik saja karena itu adalah posting Anda sendiri, tetapi pengulas lain dalam antrian ulasan harus menolaknya, dan pengguna yang menyarankan pengeditan di tempat pertama tidak seharusnya.
mbomb007
@ mbomb007 - Terima kasih telah memberi tahu saya. Dalam kasus khusus ini saya memverifikasi kode sebelum menerimanya, tetapi untuk waktu berikutnya saya akan melewatkan atau menolak ulasan semacam itu.
Chaos Manor
2

Japt, 23 byte

Ada dua solusi yang setara:

Oo(Ð -(A³òA³n @OpXÃ,йn
K=Ð;A³òA³n @OpXÃ;OoÐ -K

Yang pertama pada dasarnya melakukan hal berikut:

output(-(new Date() - (1000 .range(-1000).map(X => print(X)), new Date())));

Artinya, angka-angka dicetak di tengah pengurangan untuk menghindari keharusan menyimpan waktu dalam variabel. Namun, tidak lebih pendek dari rute variabel, yang pada dasarnya adalah:

K = new Date(); 1000 .range(-1000).map(X => print(X)); output(new Date() - K);

Dalam versi terbaru dari Japt (lebih baru dari tantangan ini), Kdiatur untuk secara otomatis kembali new Date(). Ini memotong solusi pertama menjadi 21 byte:

Oo(K-(A³òA³n @OpXÃK)n

Uji secara online!

Produksi ETH
sumber
1

QBIC , 34 byte

d=timer[-z^3,z^3|?a]?z^3*(timer-d)

Menggunakan TIMERfungsi QBasic , yang mengembalikan detik dalam notasi desimal. Membuatnya terlihat cantik menambah beberapa byte.

Penjelasan

d=timer     Set 'd' to the current # seconds since midnight
[-z^3,z^3|  FOR -1000 to 1000  --  Note that 'z' = 10 in QBIC, and z^3 saves a byte over 1000
?a          Display the iterator
]           Close the FOR loop
    timer-d Take the current time minus the time at the start of the program -- 0.156201
?z^3*()     Multiply by a thousand and display it   156.201
steenbergh
sumber
1

C ++ - 261

Hanya untuk tertawa saya pikir saya akan mengirim jawaban C ++.

#include <iostream>
#include <chrono>
using namespace std::chrono; using c=std::chrono::system_clock; void p(){c::time_point n=c::now();for(int i=-1001;++i<1001;)std::cout<<i<<"\n";std::cout<<(duration_cast<milliseconds>(system_clock::now()-n)).count()<<"\n";}

Saya akan meninggalkannya sebagai latihan untuk menentukan apa yang dilakukannya dan bagaimana menyebutnya - seharusnya tidak terlalu sulit.

original.legin
sumber
1

Scala, 77 byte

def t=System.nanoTime
val s=t
Range(-1000,1001)map println
println((t-s)/1e6)
jaxad0127
sumber
1

ForceLang, 124

set t timer.new()
set i -1000
label 1
io.writeln set i i+1
if i=1000
 io.write math.floor 0.001.mult t.poll()
 exit()
goto 1

Catatan: Anda harus menekan stderrsaat menjalankan ini. Saya percaya konsensus tentang meta adalah bahwa ini tidak dikenakan penalti jumlah byte.

SuperJedi224
sumber
1

SimpleTemplate , 92 byte

Yang benar-benar membunuh saya adalah kebutuhan untuk mencatat waktu.

{@callmicrotime intoX 1}{@for_ from-1000to1000}{@echol_}{@/}{@phpecho microtime(1)-$DATA[X]}

Karena tidak ada matematika (belum), ini membuat semuanya sangat sulit, memaksa saya untuk menulis PHP secara langsung.

Tidak Disatukan:

{@call microtime into start_time true}
{@for i from -1000 to 1000 step 1}
    {@echol i}{@// echoes a newline after}
{@/}
{@php echo microtime(true) - $DATA["start_time"];}

Penolakan:

Saya telah menjalankan ini dengan commit e118ae72c535b1fdbe1b80c847f52aa161854fda , dari 2017-01-13.

Komit terbaru adalah untuk memperbaiki sesuatu yang tidak terkait dengan kode di sini.

Ismael Miguel
sumber
1

C 134 133 byte

Terima kasih kepada @Thomas Padron-McCarthy karena telah menghemat 1 byte.

f(){clock_t s,e;s=clock();for(int i=-1000;i<1001;i++)printf("%d\n",i);e=clock();printf("%lf",((double)((e-s))/(CLOCKS_PER_SEC))*1e3);}

Versi tidak disatukan:

void f()
{   
  clock_t s,e;

  s=clock();

  for(int i=-1000;i<1001;i++)
    printf("%d\n",i);   

  e=clock();
  printf("%f",((double)((e-s))/(CLOCKS_PER_SEC))*1e3);

 }
Abel Tom
sumber
Anda dapat menyimpan satu karakter dengan mengubah "% lf" menjadi "% f".
Thomas Padron-McCarthy
Kenapa tidak int t=time(null);... printf("%d",time(null)-t)? Shorter AFAIK
SIGSTACKFAULT
1

Gura , 75 byte

t=datetime.now();println(-1000..1000);print((datetime.now()-t).usecs/1000);
Sygmei
sumber
1

Clojure, 94 byte

(let[t #(System/currentTimeMillis)s(t)](doseq[n(range -1e3 1001)](println n))(println(-(t)s)))

Saya kecewa dengan berapa lama ini terjadi, tapi saya kira tidak ada yang pernah mengklaim Clojure adalah bahasa yang baik untuk bermain golf.

Solusi naif yang hanya mencatat waktu mulai, loop, kemudian mencetak waktu saat ini dikurangi waktu mulai. Kecuali Clojure memiliki getter MS-time daripada saya hilang, saya tidak tahu bagaimana ini bisa lebih pendek. Mungkin semacam loop implisit?

(defn time-print []
  (let [t #(System/currentTimeMillis) ; Alias the time-getter to "t"
        start (t)] ; Record starting time
    (doseq [n (range -1000 1001)] ; Loop over the range...
      (println n)) ; ... printing the numbers

    (println (- (t) start)))) ; Then print the current time minus the starting time.
Carcigenicate
sumber