न्यूनतम कोड CPU तनाव-परीक्षक ...


28

परिचय

वहाँ बहुत सारी उपयोगिताओं हैं जो आपके प्रोसेसर (एस) को तनाव-परीक्षण करने के लिए एक उच्च सीपीयू लोड बनाने में सक्षम हैं। Microsoft Windows पर, आप भी ऑन-बोर्ड का उपयोग कर सकते हैं calculator.exe, एक बड़ी संख्या दर्ज करें 999999999, और n!अपने सीपीयू को काम करने के लिए कई बार दबाएं ।

लेकिन अगर आप इसे खुद नहीं बनाते हैं तो इसका क्या उपाय है?

मिशन

आपका मिशन - यदि आप इसे स्वीकार करना चुनते हैं - ग्रह पर सबसे छोटा सीपीयू तनाव-परीक्षण उपकरण बनाना है।

जरूर…

  1. गर्भपात होने तक 100% सीपीयू लोड का उत्पादन करना चाहिए
  2. एक संख्यात्मक इनपुट लेना चाहिए , तनाव-परीक्षण को चलाने वाले संख्या सेकंड का प्रतिनिधित्व करना चाहिए
  3. चाहिए उपयोगकर्ता संपर्क की अनुमति देते हैं (कुंजी दबाने, टर्मिनल विंडो, या ऐसा ही कुछ बंद करने) जो एक उपयोगकर्ता सक्षम होना चाहिए तनाव परीक्षण निरस्त करने के लिए और / या कार्यक्रम छोड़ने
  4. Microsoft Windows, Mac OSx और / या Linux को लक्षित करना चाहिए
    (यहां तक ​​कि एक हम्सटर एक कोमोडोर64 तनाव कर सकता है ... इसलिए, आपको एक मौजूदा ऑपरेटिंग सिस्टम को लक्षित करना होगा ।)

बिलकुल मना है…

  1. 3-पार्टी प्रोग्राम या टूल का उपयोग नहीं करना चाहिए जो अपेक्षित कार्यक्षमता को प्रतिस्थापित करते हैं।
    ( system('cpuStressThing.exe')आपके प्रस्ताव को अयोग्य घोषित करने की पसंद में शॉर्टकट का प्रस्ताव।)

मई ...

  1. अपेक्षित 100% CPU लोड का उत्पादन करने के लिए किसी भी दृष्टिकोण / एल्गोरिथ्म / कार्यक्षमता का उपयोग कर सकते हैं
  2. किसी भी प्रोग्रामिंग या स्क्रिप्टिंग भाषा का उपयोग कर सकते हैं
    (जब तक वह इसे चलाकर अपनी कार्यक्षमता के व्यावहारिक सत्यापन की अनुमति देता है)

जीतने की स्थिति

सबसे छोटा सोर्सकोड प्रस्तुत करें। विजेता सबसे न्यूनतम (आकार में) सोर्सकोड प्रस्तुत करने वाला है जो उपरोक्त "अनिवार्य" और "नहीं होना चाहिए" स्थितियों का अनुपालन करता है। अब, उस बच्चे को जला दो ...


संपादित करें

चूंकि सवाल टिप्पणी क्षेत्र में आया था ... आपको केवल 1 सीपीयू कोर को लक्षित करने की आवश्यकता है। मैं निश्चित रूप से आपको मल्टी-कोर समाधान का उत्पादन करने की उम्मीद नहीं कर रहा हूं। आखिरकार, यह मजेदार होना चाहिए - काम नहीं।


5
क्या "100% एक कोर" पर्याप्त है, या क्या आप "मल्टी-कोर सीपीयू का 100%" मतलब है?
टोबिया

@ टोबिया येप, 1 कोर पर्याप्त है। मैंने अपना प्रश्न विशेष रूप से उस जानकारी को शामिल करने के लिए संपादित किया है। मुझे इस तथ्य की ओर इशारा करने के लिए धन्यवाद कि यह सब बहुत स्पष्ट नहीं था।
ई-सुशी

3
क्रिप्टोक्यूरेंसी खनिकों की गिनती करें /
TheDoctor

2
@ TheDoctor यदि आप इसे मेरे द्वारा बताई गई शर्तों के अनुसार बना सकते हैं ... तो मेरे मेहमान बनें। एक क्रिप्टोक्यूरेंसी माइनर देखना निश्चित रूप से दिलचस्प होगा जो फाइलों में 36 बाइट बैश स्क्रिप्ट को हराकर (उदाहरण के लिए) सक्षम है ।
ई-सुशी

समस्या यह है कि अधिकांश खनिक कोड की कई हजार लाइनें हैं।
TheDoctor

जवाबों:


28

बैश और मानक उपयोगिताओं, 36 31 22 29 28 26 बाइट्स

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

2
यह एक बैश कोड के लिए बहुत खूबसूरत लग रहा है! यह वास्तव में एक अच्छा जवाब है!
इस्माइल मिगुएल

आप की जरूरत नहीं है :में do :; done। मैंने पाया do;doneहै कि यह काम करता है - जो आपको 2 बाइट्स में खींच लेगा। इसके अलावा +1 मेरे बैश समाधान की लगभग आधी लंबाई होने के कारण (मैंने बिना किसी अच्छे कारण के इसे अत्यधिक जटिल बना दिया क्योंकि मैं भूल गया था $!)।
क्रिस जे

1
@ क्रिस - जो मेरे लिए काम नहीं करता है bash: syntax error near unexpected token `;':। मैं इन बैश संस्करणों की कोशिश की है: 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)
डिजिटल ट्रामा

1
@ChrisJ - मैं तुम अपने आप को एक 34-बाइट है लगता है कि kshइस सवाल का जवाब तो ;-)
डिजिटल ट्रामा

2
मैं वहाँ $1जगह है 10, बस एक स्क्रिप्ट में है कि "संख्यात्मक इनपुट लेता है" बनाने के लिए।
टोबिया

20

बैश / iputils (लिनक्स), 14 बाइट्स

ping6 -fw$1 ::

जब तक -w समय सीमा समाप्त नहीं हो जाती, तब तक IPv6 अशक्त पते पर फ्लड-पिंग्स

चेतावनी - केवल मेरे परीक्षण वीएम पर 55-60% सीपीयू की खपत होती है

संपादित करें: - मैं अपने चेतावनी को वापस लेता हूं। जबकिtopping6 प्रक्रिया केवल 55-60% सीपीयू की रिपोर्ट करती है, मुझे कुल सीपीयू निष्क्रिय प्रतिशत (2 कोर वीएम) दृष्टिकोण शून्य दिखाई देता है। मुमकिन है क्योंकि प्रसंस्करण का एक अच्छा सौदा कर्नेल में चल रहा है क्योंकि यह पैकेट को संभालता है।

नोट - जड़ के रूप में चलाया जाना चाहिए। @Tobia टिप्पणियों के रूप में, यह कुछ के लिए एक उचित आवश्यकता की तरह लगता है जो सीपीयू को हग करेगा। और ओपी ने टिप्पणियों में इसे मंजूरी दे दी।


6
+1। मैं निकालूंगा sudo और सिर्फ यह बताऊंगा कि टेस्ट को रूट के रूप में चलाया जाना चाहिए। ऐसा लगता है कि सीपीयू को हग करने के लिए एक उचित आवश्यकता होगी।
तोबिया

@ टोबिया - धन्यवाद - मुझे लगता है कि आप कुछ कर रहे हैं ;-)
डिजिटल ट्रॉमा

ping -6 :: -t-> केवल अगर यह विंडोज़ पर मेरे सीपीयू को जंगली बना देता है ... यह सिर्फ खिड़कियों पर समान समकक्ष है, जो केवल त्रुटियां देता है और सीपीयू को 1% पर भी लोड नहीं करता है! मैं एक Core2quad 2.63GHz पर विंडोज़ 8 प्रो x64 का उपयोग कर रहा हूं।
इस्माइल मिगुएल

@IsmaelMiguel - yep - मेरे पास यह परीक्षण करने के लिए खिड़कियां नहीं हैं। यही कारण है कि मैंने शीर्षक में "लिनक्स" कहा ;-)
डिजिटल ट्रामा

मुझे पता है, मैं इस जवाब को गैर-काम करने वाले के रूप में "दे रहा हूं", उन लोगों के लिए जो खिड़कियों में उसी तरह की कोशिश करने के बारे में सोच रहे हैं, जैसा कि मैंने किया और असफल रहा।
इस्माईल मिगुएल

9

एल्फ 32 स्टैंडअलोन बाइनरी - 86 बाइट्स

मुझे यकीन है कि यह सबसे छोटा सही ढंग से गठित एल्फ प्रारूप बाइनरी है जिसे इस फ़ंक्शन को करने के लिए बनाया जा सकता है। यह किसी भी लिनक्स आधारित प्लेटफ़ॉर्म पर किसी अतिरिक्त समर्थन के बिना या संभावित रूप से ऑपरेटिंग सिस्टम के बिना भी निष्पादित होगा

बाइनरी डाउनलोड: http://ge.tt/3m6h2cK1/v/0?c

हेक्स डंप:

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.

यह अपने स्वयं के न्यूनतम एल्फ हेडर के साथ एएसएम फ़ाइल का निर्माण करके, और इसके उपयोग को छोड़ देता है ld पूरी तरह छोड़ देता है।

सभा:

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     $ - $$

के साथ बनाया गया nasm -f bin tiny_cpu_stresser_elf32.asm -o tiny_cpu_stresser_elf32


7

केवल 20 बाइट्स का निर्माण करें

ulimit -t $1;exec $0

@ ई-सुशी तेजी से टर्मिनल के साथ प्रयास करें, उदाहरण के लिए एक पाठ कंसोल या xterm या rxvt
ज्यॉफ

6

सी, 52

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

बाहर निकलने के लिए Ctrl + C दबाएं।

यहाँ छवि विवरण दर्ज करें


यदि आप php में ऐसा करते हैं, तो आप जीत जायेंगे! बस $i=<>भाग को हटा दें और <?शुरुआत में जोड़ें और आप जाने के लिए अच्छे हैं!
इस्माइल मिगुएल

5

पर्ल, 32

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

अब शर्मनाक हिस्सा: मैंने मूर्खतापूर्ण तरीके से कहा $t=time से सामने$i=<> और यह पता लगाने की कोशिश कर रहा था कि यह कुछ सेकंड पहले क्यों निकलता है।

फिर से बाहर निकलने के लिए Ctrl + C।

यहाँ छवि विवरण दर्ज करें


5

यूनिक्स सी, 47

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

कमांड लाइन पर समय गुजारें। बाधा कुंजी (Ctrl-C) गर्भपात।


3
यदि आप @ इक्का की scanfचाल का उपयोग करते हैं , तो आप इसे 39 तक ले जा सकते हैं:main(a){for(scanf("%d",&a),alarm(a);;);}
डेव

4

स्मॉलटॉक (स्मॉलटाक / एक्स), 34

इनपुट: एन; CTRL-c या CMD- के साथ रुकावट।

[[]loop]valueWithTimeout:n seconds

गोल्फ बेहतर कर सकते हैं, अगर दिनों में मापा; ;-) (सिर्फ मजाक)

[[]loop]valueWithTimeout:n days

यहाँ छवि विवरण दर्ज करें

या कमांड लाइन से: यहाँ छवि विवरण दर्ज करें


4

यह इस पर गंभीर प्रयास नहीं है, लेकिन ...

बैश, 12 बाइट्स

:(){ :|:&};:

जैसा कि विकिपीडिया पर पाया जाता है

चेतावनी: हानिकारक कोड, इसे अपने कंप्यूटर पर न चलाएं!


तकनीकी रूप से:
- यह सिस्टम क्रैश होने तक 100% सीपीयू लोड पैदा करता है;
- उपयोगकर्ता को इसे रोकने के लिए बातचीत की अनुमति देता है (यदि आप सभी कांटों को मारने का प्रबंधन करते हैं, तो आप वास्तव में इसे रोक सकते हैं ...);
- आप इसे एक संख्यात्मक इनपुट दे सकते हैं जो इसे चलाने वाले सेकंड की संख्या का प्रतिनिधित्व करता है, लेकिन यह इसका उपयोग नहीं करेगा।


4

पीएचपी 43 40 बाइट्स:

मुझे आशा है कि यह एक स्वीकार्य उत्तर है:

set_time_limit ($ _ अनुरोध [ 'टी']); जबकि (0!);

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

मैं ऐसा कर सकता था: <?for(set_time_limit($_POST['t']);;);लेकिन यह लचीलापन और 3 बाइट्स खो देगा।


और मैं धोखा दे सकता है और इस तरह से कर सकता हूं <?for(set_time_limit($_REQUEST[t]);;);:। यह 2 बाइट्स को बंद कर देता है, लेकिन यह "मानक" समाधान नहीं है। खेल को निष्पक्ष बनाए रखें।


जैसा कि @fireeyedboy और @primo ने सुझाव दिया था, आप इस समाधान (34 बाइट्स) का भी उपयोग कर सकते हैं:

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

यह कंसोल से इसका उपयोग करने की अनुमति देता है, इसे इस तरह बुला रहा है:

php <filename> <time in seconds>

जैसा कि मैंने बताया, मैं कंसोल समाधान को लक्षित नहीं कर रहा हूं, लेकिन उन्हें इसके लिए क्रेडिट प्राप्त करना होगा।

एक और जवाब यह "राक्षस" हो सकता है, जो संयुक्त रूप से दोनों उत्तर हैं:

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

कंसोल में होने के बिना php में मुख्य प्रेस प्राप्त करना असंभव है, जिसे मैं लक्षित नहीं कर रहा हूँ!

इसे रोकने के लिए, आपको प्रक्रिया को रोकना होगा (पृष्ठ को लोड करने से रोकना कोड रोक सकता है)!

प्लस के रूप में, यह एंड्रॉइड में भी काम करता है! यदि आप एक php सर्वर (Google Play पर निःशुल्क) स्थापित करते हैं।

इसे काम करने के लिए, बस इस तरह करें:

आप एक .php वेबपेज बनाते हैं और ?t=<time in seconds>url के अंत में जाते हैं या एक पोस्ट सबमिट करते हैं (एक फॉर्म या यहाँ तक कि ajax का उपयोग करके)।


1
@ ई-सुशी मैंने जवाब तय किया और 3 बाइट्स कम किए। बैश समाधान जितना छोटा नहीं है, लेकिन करीब है। और लचीलेपन के साथ!
इस्माइल मिगुएल

कमांड लाइन से चलाएं: उसके $_REQUEST['t']साथ बदलें और $argv[1]फिर कॉल करें: php -f cpustresstest.php <timelimit>और उसके साथ गर्भपात करें ^C
डिसेंट डब्बलर

के $_GETबजाय का उपयोग क्यों नहीं $_REQUEST? 4 बाइट्स और आप GETवैसे भी उपयोग कर रहे हैं
क्रिस्टोफर सल्ल-स्टॉरगार्ड

@KristofferSHansen क्योंकि मेरे कोड का लचीलापन गंभीर रूप से आहत होगा।
इस्माइल मिगुएल

@fireeyedboy यह एक अच्छा विचार लगता है, लेकिन जैसा कि मैंने कहा, मैं कंसोल को लक्षित नहीं कर रहा हूं।
इस्माइल मिगुएल

3

BrainFuck / विस्तारित ब्रेनफ़क : 3

+[]

यह गर्भपात होने तक एक कोर पर 100% सीपीयू का उपयोग करेगा। सभी ब्रेनफैक कार्यक्रम वैध ईबीएफ कार्यक्रम हैं।

ज़ोज़ोट्ज़ एलआईएसपी : 7 15 19

छोटे ड्राइवर का उपयोग करते समय।

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

ड्राइवर के बिना एक स्टैंडअलोन अभिव्यक्ति के रूप में: 15

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

उपयोग: echo '((\(L)(L))(\()(L)))' | jitbf zozotez.bf


3

पर्ल - 14 बाइट्स

alarm<>;{redo}

सेकंड SIGALRMमें भेजे जाने के लिए सेट करता है input, जो स्क्रिप्ट को समाप्त करता है। इस बीच, यह एक व्यस्त-प्रतीक्षा में घूमता है।

नमूना उपयोग:

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

पर्ल - 12 (+1) बाइट्स

यदि कमांड लाइन विकल्प को एक बाइट के रूप में गिना जाता है, तो इसे ए का उपयोग करके 13 बाइट्स तक कम किया जा सकता है-n :

alarm;{redo}

नमूना उपयोग:

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

+1 संकेतों के चतुर उपयोग के लिए बाहर निकलने की आवश्यकता को पूरा करने के लिए।
मेकैनिकल घोंघा

3

लिनक्स पर x86_64 विधानसभा - 146 (स्रोत), 42 (कोड इकट्ठे)

NASM स्रोत छोटा (146 बाइट्स):

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

कमांड लाइन पर एक पैरामीटर को स्वीकार करता है जो सीमा में चलने के लिए सेकंड की संख्या निर्दिष्ट करता है (0, 9999999], सामान्य Ctrl-C के साथ बाधित किया जा सकता है।

आप इसे इकट्ठा कर सकते हैं

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

सिद्धांत रूप में शुरुआत में global _startएक _start:लेबल द्वारा इसके बाद जोड़ना आवश्यक होगा , लेकिन ldथोड़ा उपद्रव के साथ इसे स्वयं ठीक करने का प्रबंधन करता है।

इसी मशीन कोड (42 बाइट्स):

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

( निर्देश nasmजोड़ने के साथ उत्पन्न BITS 64)

कुछ अधिक पठनीय संस्करण:

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

पायथन, 58 55 51

वाह ... सी एक से भी ज्यादा लंबा। वहाँ एक बेहतर तरीका हो गया है। अभी भी एक बालक लंबा है, लेकिन कम से कम यह सी समाधान धड़कता है!

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

1
हाहा, मुझे आपका पहला वाक्य बहुत पसंद है। व्यक्तिगत रूप से मैं सी के उत्तर को बराबर मानता हूं।
user12205

1
@ace (बरेली) फिक्स्ड!
बॉब

2
अब दूसरा C समाधान तुम्हारा है!
user12205

1
@ace आह, मैं छोड़ देता हूं, कम से कम यह एक पोर्टेबल है! : पी (मैंने वास्तव में पहले सिग्लरम को देखा था, लेकिन संकेतों को स्थापित करने और उपयोग करने के लिए यह बहुत महंगा है ... पायथन को इसकी चिंता करने पर चिंताजनक हो सकती है जब इसकी आवश्यकता होती है: [)
बॉब

2

जावा - 154 148 186

अजीब त्रुटि मेरे Thread.sleep()हिस्से को खा गई

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);}}

और अधिक पठनीय संस्करण:

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);
    }
}

new Threadएक अच्छा अंतहीन लूप ( for(;;);) के साथ घूमता है, फिर मुख्य धागे पर thread.sleep()और System.exit(0)बाहर निकलने के लिए एक समय समाप्त होता है; ctrl-c बाहर निकलता है, cmdline पर भी वह शॉर्टहैंड करने में सक्षम नहीं था exit()। दुर्घटना अभ्यस्त काम;


2

बैच, 2 वर्ण

%0

संक्षेप में, कार्यक्रम लगातार खुद को बार-बार शुरू करता है। प्रोसेसर के कार्य आवंटन प्राथमिकता के कारण आपके परिणाम भिन्न हो सकते हैं, लेकिन यह मेरे लिए काम करता है।


2

पॉवर्सशैल, 18 54 50 बाइट्स

सभी CPU कोर के लिए 100% लोड का उत्पादन करने के लिए।

for($s=date;($s|% AddS* "$args")-ge(date)){sajb{}}
  • स्क्रिप्ट तर्क के रूप में सेकंड में एक समय लेती है।
  • | AddS*है शॉर्टकट के लिए .AddSeconds()विधि।
  • sajbStart-Jobcmdlet के लिए उपनाम है ।

1
यह आवश्यकता 2 ( must take a numeric input, representing the number seconds the stress-test should run) को कैसे संतुष्ट करती है ?
Οआयुष

धन्यवाद। निश्चित ..
mazzy

1

लिनक्स श और मानक उपयोगिताओं, 14

हालिया ग्नू कोरुटिल्स में एक timeoutउपयोगिता शामिल है जो सहायक है:

 timeout $1 yes

1
कहीं नहीं मेरे पास 100% CPU; मुझे लगता है कि मुझे लगता है ... वहाँ एक और आदेश है मुद्रित करने के लिए बहुत ज्यादा रास्ता काट दिया है?
निक टी

timeout $1 yes :|sh- 19 शायद सबसे अच्छा है जो आप कर सकते हैं और 100% उपयोग प्राप्त कर सकते हैं। मेरे जवाब के लिए यह चोरी करने के लिए उकसाया गया, लेकिन मैं खिलाड़ी की तरह रहूंगा :)
डिजिटल ट्रॉमा


1

जाओ, 215 212 193 बाइट्स (पूर्ण)

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)}

बोनस, सभी सीपीयू पर जोर देता है।

Now()पाश में अनुसूचक में लात करने के लिए नहीं है,Now कम से कम समारोह नाम मैं अपने नाम स्थान में मिल सकता था

अगर मैं go fmtआकार बढ़ाता हूं तो 286 277 254 बाइट्स हो जाती हैं



1

विधानसभा: 16 बाइट्स

_start:jg _start

संपादित करें: एक संख्यात्मक इनपुट लेने की आवश्यकता पर ध्यान नहीं दिया गया है, मैं यह दावा करने जा रहा हूं कि यह कमांडलाइन पर एक है, लेकिन यह उपेक्षा करता है =)


यह परीक्षण चलाने वाले सेकंड की संख्या के लिए एक संख्यात्मक इनपुट लेता है? यह मुझे लगता है जैसे यह बस असीम रूप से छोरों। जो भी हो, अपने उत्तर में स्पष्टीकरण जोड़ना याद रखें।
जस्टिन

ओह ... सवाल के उस हिस्से को पूरी तरह से पढ़ें: /
दंगा

1

डॉस बैच - 5 बाइट्स

%0|%0

डॉस बैच - 8 बाइट्स

%0|%0&%0

दूसरा कुख्यात श फॉरबॉम्ब का अनुवाद है।

Ctrl + C प्रोग्राम को तोड़ता है (जब तक कि आपने सेटिंग्स को थोड़ा छोटा नहीं किया है)।


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){}}}

असम्पीडित

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

इसके लिए एक तर्क के रूप में एक संख्या की आवश्यकता होती है जो चलाने के लिए सेकंड की संख्या है। यह उस समय या crtl + c के लिए एक कोर के 100% का उपयोग करेगा। मुझे पूरा यकीन है कि यह उतना ही छोटा होगा जितना C # इसकी वर्बोसिटी के साथ जाएगा।


1

C # - 178 अक्षर

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();});}}

और अधिक पठनीय:

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(); 
            });
        }
    }
}

सी # में 178 वर्ण और सभी कोर का उपयोग करता है।

एकमात्र कमजोरी जो यह हमेशा 1 << 30 पूर्णांक सीमा के कारण समाप्त हो रही है।


1

जावा - 88 वर्ण

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

यह 2⁶³-1 छोरों के लिए अनुमति देता है।

अधिक पठनीय संस्करण

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

सी # - 87 वर्ण

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

अधिक पठनीय संस्करण

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

कार्यक्रम के मुख्य भाग पेगिंग

(यह 4 कोर सिस्टम पर है)


ओपी ने 100% के लिए कहा
मिलो

ओपी ने यह भी निर्दिष्ट किया कि आपको केवल एक कोर खूंटे की आवश्यकता है। यह 25% तक जा सकता है (जो 1 कोर का 100% है)।
जस्टिन क्रेजाचा

2
पिकी नहीं है, लेकिन आपकी छवि 24.89% 25% नहीं दिखाती है
मिलो

सच। यह इस बात पर निर्भर करता है कि उस कोर पर क्या हो रहा है। यदि कोर पर कुछ भी नहीं हो रहा है, तो यह पूर्ण 25% का उपयोग करेगा।
जस्टिन क्रेजा

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)

यह सिंगल-कोर मशीन पर 100% सीपीयू का उपयोग करेगा, और फ़ायरफ़ॉक्स के साथ, इसमें अतिरिक्त बोनस है जो फ़ायरफ़ॉक्स अधिक से अधिक मेमोरी का उपयोग करता है; संपूर्ण इंटरफ़ेस लॉक हो जाता है और इसे रोकने का एकमात्र तरीका कार्य प्रबंधक में फ़ायरफ़ॉक्स को मारना है।


1

पर्ल, 23 ​​बाइट्स

मैं यह पता नहीं लगा सकता कि यहां शाब्दिक नियंत्रण-टी को कैसे पेस्ट किया जाए, इसलिए मैंने इसके बजाय $ ^ T टाइप किया है, लेकिन या तो काम करता है (शाब्दिक 1 चार्ट 23 बाइट्स से छोटा है):

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

$ ^ टी केवल दुभाषिया शुरू होने का समय है, इसलिए आप मूल रूप से उस समय () को पढ़ सकते हैं क्योंकि यह पहली चीज है जिसकी हम गणना करते हैं।


1

अजगर, ३०

मुझे यह पुरानी पहेली दिलचस्प लगी, मुझे उम्मीद है कि एक पुराने प्रश्न का उत्तर पोस्ट करना ठीक है। मैं सिर्फ सी जवाब नहीं दे सका पायथन को हराया। ;)

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

यह जरूरतों को अलग सीपीयू के लिए देखते हैं, लेकिन मुझे नहीं लगता कि ओपी का उल्लंघन करती है ... है sum(range(2**27))में से एक खूंटे मेरी एक दूसरे के बारे में के लिए 2.8GHz i7 कोर। :)


1
PPCG में आपका स्वागत है! पुराने प्रश्नों के उत्तर पोस्ट करना यहाँ पूरी तरह से स्वीकार्य है, हालाँकि जहाँ तक मुझे लगता है कि यह उत्तर आवश्यकता को पूरा नहीं करता है must produce 100% CPU load until aborted
लैकोनी

धन्यवाद! :) मेरी मशीन पर, यह कोड एक ही कोर पर 100% लोड पैदा करता है, और मैं इसे किसी अन्य स्क्रिप्ट की तरह गर्भपात कर सकता हूं, Ctrl-C दबाकर या मूल प्रक्रिया को मारकर (उदाहरण के लिए, टर्मिनल विंडो बंद करके) या आदि पर भी ध्यान दें। आवश्यकता 2 must take a numeric input, representing the number seconds the stress-test should run:। ताकि कोड को किसी तरह उपयोगकर्ता इनपुट लेने और तदनुसार स्वयं-सीमा की आवश्यकता हो, साथ ही साथ बस एक सीपीयू खूंटी। यह वह हिस्सा है जो मुझे पहेली के बारे में सबसे दिलचस्प लगा ...
जेम्स

आप सही हैं, स्पष्टीकरण के लिए धन्यवाद।
लकोनी 19
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.