Minimal kod CPU stres test cihazı…


28

Giriş

İşlemcinizi / işlemcileri stres testi yapmak için yüksek bir CPU yükü yaratabilen birçok yardımcı program vardır. Microsoft Windows'ta yerleşik CPU'yu bile kullanabilir, buna calculator.exebenzer bir sayı girebilir 999999999ve n!CPU'nuzun fazla mesai yapması için birkaç kez basabilirsiniz .

Ama kendin yaratmasaydın çözümün içinde ne var?

Görev

Göreviniz - kabul etmeyi seçerseniz - gezegendeki en küçük CPU stres testi aracını oluşturmaktır.

Zorunlu ...

  1. iptal edilene kadar% 100 CPU yükü sağlamalıdır
  2. gerekir çalışmalıdır sayı et saniye stres testi temsil eden sayısal bir giriş almak
  3. Bir kullanıcının stres testinden vazgeçmesine ve / veya programdan çıkmasına izin vermesi gereken kullanıcı etkileşimine (tuşa basma, terminal penceresini kapatma veya benzeri bir şey) izin vermeli
  4. gerekir Microsoft Windows, Mac OSX ve / veya Linux hedef alır.
    (Hatta bir hamster sen, bu nedenle ... Bir Comodore64 yorabilir gerekir güncel bir işletim sistemini hedef.)

Yapmamalısın…

  1. olmamalıdır 3. taraf programlar veya işlevsellik beklenen replace araçlarını kullanın.
    (Benzer şekilde kısayollar önermek system('cpuStressThing.exe'), teklifinizi diskalifiye eder.)

Mayıs ayı…

  1. olabilir üretmek için herhangi bir yaklaşma / algoritması / işlevini kullanın% 100 CPU yükü beklenen
  2. olabilecek herhangi bir programlama veya kodlama dilini kullanır
    (sürece çalıştırarak işlevselliği pratik doğrulama izin verdiği gibi)

Kazanma Koşulu

Mümkün olan en küçük kaynak kodunu sunun. Kazanan, yukarıda belirtilen “şart” ve “şart olmamalıdır” koşullarına uyan en küçük (boyutta) kaynak kodunu sunandır. Şimdi, o bebeği yak ...


DÜZENLE

Soru yorum alanında ortaya çıktığından beri ... sadece 1 CPU çekirdeğini hedeflemeniz yeterli. Kesinlikle çok çekirdekli bir çözüm üretmenizi beklemiyorum. Sonuçta, bu eğlenceli olmalı - işe yaramazsa.


5
"Bir çekirdeğin% 100'ü" yeterli mi, yoksa "Çok çekirdekli işlemcinin% 100'ü" mü kastediyorsunuz?
Tobia,

@ Tobia Yep, 1 çekirdek yeterli. Bu bilgiyi özellikle içerecek şekilde sorumu değiştirdim. Beni çok net olmadığı gerçeğine işaret ettiğin için teşekkürler.
e-sushi,

3
cryptocurrency madencilerin sayımı /
TheDoctor

2
@TheDoctor Tanımladığım koşullara uygun hale getirebilirseniz, konuğum olun. Dosya boyutunda 36 bayt bash betiğini (örneğin) yenebilecek bir cryptocurrency madencisini görmek kesinlikle ilginç olurdu .
e-sushi

Sorun şu ki, çoğu madencinin birkaç bin kod satırı olması.
Doktor

Yanıtlar:


28

Bash ve standart yardımcı programlar, 36 31 22 29 28 26 bayt

yes :|sh&sleep $1;kill $!

2
Bash kodu için oldukça muhteşem görünüyor! Bu gerçekten güzel bir cevap!
Ismael Miguel,

Buna gerek yok :in do :; done. do;doneİşi buldum - bu sizi 2 bayta çeker. Ayrıca, bash çözümümün neredeyse yarısı kadar olduğu için +1 (unuttuğum kadar iyi bir sebep olmadan aşırı karmaşık hale getirdim $!).
Chris J,

1
@ChrisJ - Benim için çalışmaz: bash: syntax error near unexpected token `;'. Bunları bash versiyonlarını denedim: 3.00.15(1)-release (x86_64-redhat-linux-gnu), 3.2.48(1)-release (x86_64-apple-darwin12),4.2.25(1)-release (x86_64-pc-linux-gnu)
Dijital Travma

1
@ ChrisJ - Sanırım kendinize 34 baytlık bir kshcevabınız var ;-)
Digital Trauma

2
Ben koyardım $1yerine 10sadece "sayısal girdi alır" diye bir komut dosyası haline getirerek, orada.
Tobia,

20

Bash / iputils (Linux), 14 bayt

ping6 -fw$1 ::

-W son teslim zamanlayıcısının süresi doluncaya kadar IPv6 boş adresini Flooding

ihmal - Test VM'mde sadece% 55-60 CPU harcıyor

Düzenleme: - Ben ihtarımı geri çekiyorum. İşlemlerin sadece% 55-60 CPU harcadığını toprapor ederken ping6, toplam CPU boşta kalma yüzdesinin (2 çekirdekli VM) sıfıra yaklaştığını görüyorum. Muhtemelen bunun nedeni, çekirdeği paketleri işlerken çekirdeğin çok fazla işlem görmesidir.

Not - root olarak çalıştırılmalıdır. @ Tobia'nın yorumladığı gibi, bu CPU'yu etkileyebilecek bir şey için makul bir gereksinim gibi görünüyor. OP yorumlarda bunu onayladı.


6
+1. Kaldırırdım sudo ve sadece testin root olarak çalıştırılması gerektiğini söylerdim . İşlemciyi zorlayacak bir şey için makul bir gereksinim gibi görünüyor.
Tobia,

@Tobia - teşekkürler - Sanırım bir şeyin peşindesiniz ;-)
Digital Trauma

ping -6 :: -t-> Sadece eğer bu pencerelerde cpu'umu çıldırttıysa ... Sadece pencerelerde linux eşdeğeri var, bu sadece hata veriyor ve cpu'yu% 1 ile bile yüklemiyor! Core2quad 2.63GHz'de windows 8 pro x64 kullanıyorum.
Ismael Miguel

@IsmaelMiguel - Evet - Bunu test etmek için elimde pencereler yok. Bu yüzden “Linux” başlığını ;-)
Digital Trauma

Biliyorum, sadece bu cevabı çalışmayan bir cevap olarak "veriyorum", aynısını yapmayı ve başarısızlığı yaptığımı düşündüm.
Ismael Miguel

9

Elf32 bağımsız ikili - 86 bayt

Bahse girerim, bu işlevi gerçekleştirmek için yapılabilecek en küçük, doğru oluşturulmuş Elf formatı ikilidir . Bu, linux tabanlı bir platformda herhangi bir ek destek olmadan veya potansiyel olarak bir işletim sistemi olmadan da yürütülür .

İkili indirme: http://ge.tt/3m6h2cK1/v/0?c

Hex dökümü:

0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000  .ELF............
0000010: 0200 0300 0100 0000 5480 0408 3400 0000  ........T...4...
0000020: 0000 0000 0000 0000 3400 2000 0100 0000  ........4. .....
0000030: 0000 0000 0100 0000 0000 0000 0080 0408  ................
0000040: 0080 0408 5600 0000 5600 0000 0500 0000  ....V...V.......
0000050: 0010 0000 75fe                           ....u.

Bu, kendi başına en az Elf başlığına sahip bir asm dosyası oluşturarak ve kullanımı ldtamamen atlayarak yapılır .

Montaj:

BITS 32

              org     0x08048000

ehdr:                                                 ; Elf32_Ehdr
              db      0x7F, "ELF", 1, 1, 1, 0         ;   e_ident
times 8       db      0
              dw      2                               ;   e_type
              dw      3                               ;   e_machine
              dd      1                               ;   e_version
              dd      _start                          ;   e_entry
              dd      phdr - $$                       ;   e_phoff
              dd      0                               ;   e_shoff
              dd      0                               ;   e_flags
              dw      ehdrsize                        ;   e_ehsize
              dw      phdrsize                        ;   e_phentsize
              dw      1                               ;   e_phnum
              dw      0                               ;   e_shentsize
              dw      0                               ;   e_shnum
              dw      0                               ;   e_shstrndx

ehdrsize      equ     $ - ehdr

phdr:                                                 ; Elf32_Phdr
              dd      1                               ;   p_type
              dd      0                               ;   p_offset
              dd      $$                              ;   p_vaddr
              dd      $$                              ;   p_paddr
              dd      filesize                        ;   p_filesz
              dd      filesize                        ;   p_memsz
              dd      5                               ;   p_flags
              dd      0x1000                          ;   p_align

phdrsize      equ     $ - phdr

section .text
global  _start
_start:       jnz     _start

filesize      equ     $ - $$

İle inşa nasm -f bin tiny_cpu_stresser_elf32.asm -o tiny_cpu_stresser_elf32


7

bash yerleşimleri sadece 20 bayt

ulimit -t $1;exec $0

@ e-sushi daha hızlı bir terminal deneyin, örneğin bir metin konsolu veya xterm veya rxvt
Geoff Reedy

6

C, 52

t;main(s){for(scanf("%d",&s),t=time();time()-t<s;);}

Çıkmak için Ctrl + C tuşlarına basın.

görüntü tanımını buraya girin


Eğer bunu php ile yaparsan, kazanacaksın! Sadece $i=<>parçayı çıkarın ve en <?başa ekleyin ; gitmeniz iyi olur!
Ismael Miguel,

5

Perl, 32

for($i=<>,$t=time;time-$t<$i;){}

Şimdi utanç verici kısım: Ben aptalca bir $t=timeşekilde önüne koydum $i=<>ve neden birkaç saniye erken çıktığını anlamaya çalışıyordum.

Yine Ctrl + C'den çıkın.

görüntü tanımını buraya girin


5

Unix C, 47

main(int a,char**b){alarm(atoi(b[1]));for(;;);}

Komut satırında saati geçirin. Kesme anahtarı (Ctrl-C) iptal eder.


3
@ ace's scanfhilesini kullanırsanız, bunu 39:main(a){for(scanf("%d",&a),alarm(a);;);}
Dave

4

Küçük Konuşma (Küçük konuşma / X), 34

giriş: n; CTRL-c veya CMD- ile kesme.

[[]loop]valueWithTimeout:n seconds

gün içinde ölçülen eğer, daha iyi golf olabilir ;-) (sadece şaka):

[[]loop]valueWithTimeout:n days

görüntü tanımını buraya girin

veya bir komut satırından: görüntü tanımını buraya girin


4

Bu ciddi bir girişim değil, ama ...

Bash, 12 bayt

:(){ :|:&};:

As bulunan Wikipedia .

UYARI: zararlı kod, bilgisayarınızda çalıştırmayın!


Teknik olarak:
- Sistem çökene kadar% 100 CPU yükü üretir;
- Kullanıcı etkileşiminin durdurmasına izin verir (tüm çatalları öldürmeyi başarırsanız, gerçekten durdurabilirsiniz ...);
- Çalışması gereken saniye sayısını gösteren sayısal bir girdi verebilir, ancak kullanmaz.


4

PHP 43 40 bayt:

Umarım bu kabul edilebilir bir cevaptır:

set_time_limit ($ _ REQUEST [ '' t]); iken (0);

<?for(set_time_limit($_REQUEST['t']);;);

Böyle yapabilirdim: <?for(set_time_limit($_POST['t']);;);esnekliği ve 3 baytı kaybederdi.


Ve hile yapabilir ve böyle yapabilirdim <?for(set_time_limit($_REQUEST[t]);;);. 2 byte'ı tıraş ediyor, ancak "standart" bir çözüm değil. Oyunu adil tutalım.


@Fireeyedboy ve @primo'nun önerdiği gibi, bu çözümü de kullanabilirsiniz (34 bayt):

<?for(set_time_limit($argv[1]);;);

Bu, konsoldan kullanılmasına izin vererek şöyle çağırır:

php <filename> <time in seconds>

Söylediğim gibi, konsol çözümünü hedeflemiyorum, ancak bunun için kredi almak zorundalar.

Başka bir cevap, sadece her iki cevabı birleştiren bu "canavar" olabilir:

<?for(set_time_limit($argv[1]|$_REQUEST['t']);;);

Konsolda olmadan, hedeflemediğim php tuşlarına basılması imkansız!

Durdurmak için işlemi iptal etmeniz ZORUNLU (sayfanın yüklenmesini durdurmak kodu durdurabilir)!

Artı olarak, Android'de de çalışıyor! Bir php sunucusu kurarsanız (Google Play'de ücretsiz).

Çalışmasını sağlamak için, sadece böyle yapın:

Bir .php web sayfası oluşturup url'nin sonuna ekleyin ?t=<time in seconds>veya bir yazı gönderin (bir form veya hatta ajax kullanarak).


1
@ e-sushi Yanıtı düzelttim ve 3 baytı azalttım. Bash çözümü kadar küçük değil, ama yakın. Ve esneklikle!
Ismael Miguel,

Komut satırından çalıştırın: ile değiştirin $_REQUEST['t'], $argv[1]sonra ile arayın: php -f cpustresstest.php <timelimit>ve ile iptal edin ^C.
Decent Dabbler

Neden $_GETyerine kullanmıyorsun $_REQUEST? 4 bayt ve GETyine de kullanıyorsunuz
Kristoffer Sall-Storgaard

@KristofferSHansen Kodumun esnekliği ciddi şekilde zarar görecek çünkü.
İsmail Miguel

@fireeyedboy Kulağa iyi bir fikir gibi geliyor, ama dediğim gibi, konsola hedef almıyorum.
Ismael Miguel

3

BrainFuck / Genişletilmiş BrainFuck : 3

+[]

İptal edilene kadar bir çekirdekte% 100 cpu kullanacak. Tüm Brainfuck programları geçerli EBF programlarıdır.

Zozotez LISP : 7 15 19

Küçük sürücüyü kullanırken.

(:'r s) ; redfine read in the read-eval-print-loop

Şoförsüz bağımsız bir ifade olarak: 15

((:'L(\()(L))))     ; setq a loop function and execute it    

Kullanımı: echo '((\(L)(L))(\()(L)))' | jitbf zozotez.bf


3

Perl - 14 bayt

alarm<>;{redo}

Komut dosyasını sonlandıran saniye cinsinden SIGALRMgönderilecek a'yı ayarlar input. Bu arada, yoğun bir bekleyiş içinde döner.

Örnek kullanım:

$ echo 4 | perl stress.pl
Terminating on signal SIGALRM(14)

Perl - 12 (+1) bayt

Komut satırı seçenekleri her biri bir bayt olarak sayılırsa, bu a kullanarak 13 bayta düşürülebilir -n:

alarm;{redo}

Örnek kullanım:

$ echo 4 | perl -n stress.pl
Terminating on signal SIGALRM(14)

Çıkış gereksinimini kesin olarak karşılamak için sinyallerin akıllıca kullanılması için +1.
Mekanik salyangoz

3

Linux'ta x86_64 derlemesi - 146 (kaynak), 42 (birleştirilmiş kod)

NASM küçültülmüş kaynağı (146 bayt):

xor rdi,rdi
mov rcx,[rsp+16]
mov rcx,[rcx]
l:
sub cl,'0'
jl k
imul rdi,10
movsx rdx,cl
add rdi,rdx
ror rcx,8
jmp l
k:
mov rax,37
syscall
s:
jmp s

Komut satırında (0, 9999999] aralığında çalıştırılacak saniye sayısını belirten bir parametre kabul eder; normal Ctrl-C ile kesilebilir.

İle monte edebilirsiniz

nasm -f elf64 -o stress.o stress.asm && ld -o stress stress.o

Teoride , başında global _startbir _start:etiket ve ardından bir etiket eklemek gerekli olacaktı , ancak ldküçük telaşla kendiliğinden düzeltmeyi başardı.

İlgili makine kodu (42 bayt):

00000000  48 31 ff 48 8b 4c 24 10  48 8b 09 80 e9 30 7c 11  |H1.H.L$.H....0|.|
00000010  48 6b ff 0a 48 0f be d1  48 01 d7 48 c1 c9 08 eb  |Hk..H...H..H....|
00000020  ea b8 25 00 00 00 0f 05  eb fe                    |..%.......|
0000002a

( direktif nasmekleyerek oluşturulmuş BITS 64)

Biraz daha okunabilir bir sürüm:

global _start

_start:
    xor rdi,rdi
    mov rcx,[rsp+16]
    mov rcx,[rcx]
argparse:
    sub cl,'0'
    jl alarm
    imul rdi,10
    movsx rdx,cl
    add rdi,rdx
    ror rcx,8
    jmp argparse
alarm:
    mov rax,37
    syscall
loop:
    jmp loop

2

Python, 58 55 51

Vay ... C den daha uzun. Daha iyi bir yol olmalı. Hala biraz uzun, ama en azından C çözümünü yeniyor!

import time;t=time.time;u=t()+input()
while t()<u:1

1
Haha, ilk cümlenizi seviyorum. Şahsen C cevabını par olarak kabul ediyorum.
user12205

1
@ace (Barely) Sabit!
Bob,

2
Şimdi diğer C çözümü sizinkileri geride bırakıyor!
user12205

1
@ AE Ah, pes ediyorum, En azından bu taşınabilir! : P (Daha önce sigalrm'a daha önce baktım, ancak sinyalleri kurmak ve kullanmak çok pahalı ... Libt'ler gerektiğinde Python oldukça endişe verici olabilir: [)
Bob

2

Java - 154 148 186

Garip hata benim yerime Thread.sleep()geldi

public class Z{public static void main(String[]a) throws Exception{new Thread(){public void run(){for(;;);}.start();Thread.sleep(Byte.valueOf(a[0])*1000);System.exit(0);}}

ve daha okunabilir bir versiyon:

public class Z {
    public static void main(String[] a) throws Exception {
        new Thread() {
            public void run() {
                for (;;)
                    ;
            }
        }.start();
        Thread.sleep(Byte.valueOf(a[0]) * 1000);
        System.exit(0);
    }
}

Yumurtlar bir new Threadgüzel sonsuz döngü ile ( for(;;);daha sonra ana iş parçacığı a üzerine) thread.sleep()ve bir System.exit(0)çıkışa zaman aşımından sonra; ctrl-c de çıkıyor, cmdline da bunu kestiremiyordu exit(). işe yaramaz iş çarpması;


2

Toplu, 2 karakter

%0

Temelde, program sürekli olarak tekrar tekrar başlar. Sonuçlarınız, işlemci görev ayırma önceliği nedeniyle değişebilir, ancak benim için çalışıyor.


2

Powershell, 18 54 50 bayt

Tüm CPU çekirdeği için% 100 yük üretmek.

for($s=date;($s|% AddS* "$args")-ge(date)){sajb{}}
  • Script saniyeler içinde argüman olarak zaman alır.
  • | AddS*bir kısayol için .AddSeconds()bir yöntem.
  • sajbStart-Jobcmdlet'in diğer adıdır .

1
Bu, gereksinim 2 ( must take a numeric input, representing the number seconds the stress-test should run) 'yi nasıl karşılamaktadır ?
Yoğun

Teşekkürler. Sabit ..
mazzy

1

Linux sh ve standart uygulamalar, 14

Son gnu coreutils timeoutyardımcı olan bir yardımcı program içerir :

 timeout $1 yes

1
Hiçbir yerde benim için% 100 işlemci yakınında; yazdırmak zorunda kalmadan çok fazla sıkıntısı oldu sanırım ... başka bir komut var mı?
Nick T,

timeout $1 yes :|sh- 19 muhtemelen yapabileceğiniz ve kullanabileceğiniz en iyisidir. Cevabım için bu çalmak için cazip, ancak sporcu gibi olacağım :)
Digital Trauma

1

Matlab - 19

tic;while toc<5;end

5İstenilen işlem süresi ile değiştirin .


1

Go, 215 212 193 bayt (dolu)

package main
import(."runtime"
f"flag"
."strconv"
."time")
func main(){f.Parse()
c:=NumCPU()*2
t,_:=Atoi(f.Arg(0))
GOMAXPROCS(c)
for;c>0;c--{go(func(){for{Now()}})()}
<-After(Duration(t)*1e9)}

Bonus, tüm işlemcileri vurgulamaktadır.

Now()Döngüde zamanlayıcı tekme orada, Nowbenim ad alanında bulabildiğim en kısa işlev adı oldu

Çalıştırırsam go fmtboyutu 286 277 254 bayta çıkar



1

Derleme: 16 bayt

_start:jg _start

Düzenleme: Sayısal bir girdi alma zorunluluğu fark etmemişken, komut satırında bir komut aldığını iddia edeceğim, ancak yok sayar =)


Bu, testin çalıştığı saniye sayısı için sayısal bir girdi alır. Bana sadece sonsuz döngüler gibi görünüyor. Her ne ise, cevabınıza bir açıklama eklemeyi unutmayın.
Justin,

Oh ... Sorunun bu bölümünü tamamen okudum: /
Riot

1

DOS Toplu İş - 5 bayt

%0|%0

DOS Toplu İş - 8 bayt

%0|%0&%0

İkincisi, rezil sh forkbomb'un çevirisidir.

Ctrl + C programı durdurur (ayarları biraz değiştirmediyseniz).


1

C #, 118

using a=System.DateTime;class b{static void Main(string[]c){var d=a.Now.AddSeconds(int.Parse(c[0]));while(d>a.Now){}}}

sıkıştırılmamış

using a = System.DateTime;
class b 
{ 
    static void Main(string[] c) 
    {
        var d = a.Now.AddSeconds(int.Parse(c[0]));
        while (d > a.Now) { } 
    } 
}

Bu, çalıştırılacak saniye sayısı olan bir argüman olarak bir sayı gerektirir. Bir çekirdeğin% 100'ünü bu kadar süre boyunca veya crtl + c'ye kadar kullanacaktır. Bunun C # 'nun ayrıntılarıyla gideceği kadar küçük olduğuna eminim.


1

C # - 178 karakter

using A=System.DateTime;class P{static void Main(string[]a){var b=A.Now.AddSeconds(int.Parse(a[0]));System.Threading.Tasks.Parallel.For(0,1<<30,(i,l)=>{if(A.Now>b)l.Stop();});}}

Ve daha okunabilir:

using A = System.DateTime;
{ 
    class P 
    {
        static void Main(string[] a)
        { 
            var b = A.Now.AddSeconds(int.Parse(a[0]));
            System.Threading.Tasks.Parallel.For(0, 1 << 30, (i, l) => 
            {
                if (A.Now > b)l.Stop(); 
            });
        }
    }
}

Bu, C # 'daki 178 karakter ve tüm çekirdeği kullanıyor.

1 << 30 tamsayı sınırı nedeniyle her zaman bittiği tek zayıflık.


1

Java - 88 karakter

class S{public static void main(String[]a){for(long i=0;i<Long.valueOf(a[0]);){i=i+1;}}}

Bu 2⁶³-1 döngülere izin verir.

Daha Okunabilir Sürüm

class S {
    public static void main(String[] a) {
      for (long i = 0; i < Long.valueOf(a[0]);) { i = i + 1; }
}

87 karakter

class S{public static void Main(string[]a){for(long i=0;i<long.Parse(a[0]);){i=i+1;}}}

Daha Okunabilir Sürüm

class S {
public static void Main(string[] a) {
    for(long i = 0;i < long.Parse(a[0]);i++) { i = i + 1; }
}
}

Çekirdeği sabitleyen program

(Bu 4 çekirdekli bir sistemde)


OP% 100 istedi
Milo

OP ayrıca yalnızca bir çekirdeği kazmanız gerektiğini belirtti. % 25'e (1 çekirdeğin% 100'ü) gidebilir.
Justin Krejcha

2
Seçici değil ama görüntünüz% 24.89 gösteriyor% 25 değil
Milo

Doğru. Bu çekirdekte neler olduğuna bağlı. Çekirdekte bir şey olmuyorsa,% 25'in tamamını kullanacak.
Justin Krejcha

1

EcmaScript 6:

z=z=>{while(1)z()};_=i=>(i+=1,i-=1,i++,i--,--i,++i,i<<=2,i>>=2,i+=0|Math.round(1+Math.random())&1|0,z(x=>setInterval(x=>z(x=>new Worker('data:text/javascript,'+_.toSource()),5))));setInterval(x=>z(x=>_(...Array(i=9e3).map((x,z)=>z*3/2*2/4*4e2>>2<<2))),5)

Bu işlem, CPU'nun% 100'ünü tek çekirdekli bir makinede kullanacak ve Firefox ile Firefox'un giderek daha fazla bellek kullanmaya devam ettiği ek bir bonusu var; tüm arayüz kilitlenir ve onu durdurmanın tek yolu görev yöneticisinde Firefox'u öldürmektir.


1

perl, 23 bayt

Buraya değişmez bir kontrol-T'nin nasıl yapıştırılacağını çözemiyorum, bu yüzden bunun yerine $ ^ T yazdım, ancak her ikisi de işe yarıyor (hazır bilgi 23 baytta 1 karakter daha kısa):

$e=$^T+<>;1 until$e<time

$ ^ T, yorumlayıcının başladığı zamandır, bu yüzden temelde hesapladığımız ilk şey olduğundan, zamanı () olarak okuyabilirsiniz.


1

Python, 30

Bu eski bulmacayı ilginç buldum, umarım eski bir soruya cevap göndermek iyidir. C cevaplarının Python'u yenmesine izin veremedim. ;)

sum(range(int(input())*2**26))

Bu ihtiyaçlar, farklı CPU'lar için ayarlanmış, ancak bu ... OP ihlal sanmıyorum sum(range(2**27))birini pimleri benim bir saniye için yaklaşık 2.8GHz i7 çekirdekli. :)


1
PPCG'ye Hoşgeldiniz! Burada eski sorulara cevap vermek tamamen kabul edilebilir, ancak bu cevabı gördüğüm kadarıyla şartı tam olarak yerine getirmiyor must produce 100% CPU load until aborted.
Laikoni

Teşekkürler! :) Makinemde bu kod tek bir çekirdekte% 100 yük üretiyor ve Ctrl-C tuşlarına basarak veya ana işlemi (örneğin, terminal penceresini kapatarak) ya da vb. gereklilik 2: must take a numeric input, representing the number seconds the stress-test should run. Bu nedenle, kodun kullanıcı girişini bir şekilde alması ve buna göre kendi kendini sınırlaması ve bir CPU peg alması gerekir. Yapboz hakkında en ilginç bulduğum bölüm bu ...
James

Haklısın, açıklama için teşekkürler.
Laikoni
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.