You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2022/11/26 02:45:04 UTC

[GitHub] [pulsar] liangyepianzhou commented on pull request #15378: [PIP-159][Improve][txn]Reuse transaction buffer reader

liangyepianzhou commented on PR #15378:
URL: https://github.com/apache/pulsar/pull/15378#issuecomment-1327965980

   Run a standalone, and use the below test to get the running time of change thread or not.
   ```java
       public void testTheRateOfExternalEcutorService() throws Exception {
           String topic = "testTheRateOfExternalEcutorService";
           String subName = "subName";
           int message_total = 1000;
   
           ExecutorService executorService = Executors.newFixedThreadPool(10);
           pulsarClient = PulsarClient.builder().serviceUrl("pulsar://127.0.0.1:6650").enableTransaction(true).build();
           ((PulsarClientImpl) pulsarClient).testExecutorService = executorService;
   
           //Build producer and consumer
           @Cleanup
           Producer<String> producer = pulsarClient.newProducer(Schema.STRING)
                   .topic(topic)
                   .create();
           @Cleanup
           Consumer<String> consumer = pulsarClient.newConsumer(Schema.STRING)
                   .topic(topic)
                   .subscriptionName(subName)
                   .subscribe();
   
           CountDownLatch countDownLatch = new CountDownLatch(message_total);
   
           for (int i = 0; i < message_total; i++) {
               producer.newMessage().send();
           }
           long start_time = System.currentTimeMillis();
           for (int i = 0; i < message_total; i++) {
               pulsarClient.newTransaction().build().thenAcceptAsync(txn -> {
                   try {
                       producer.newMessage(txn).sendAsync();
                       Message<String> message = consumer.receive(3, TimeUnit.SECONDS);
                       consumer.acknowledgeAsync(message.getMessageId(), txn);
                       txn.commit().thenRun(countDownLatch::countDown);
                   } catch (Exception e) {
                       throw new RuntimeException(e);
                   }
               });
           }
   
           countDownLatch.await();
           long end_time = System.currentTimeMillis();
           log.info("The message process by external executor test spend {} millis",
                   TimeUnit.MILLISECONDS.toMillis(end_time - start_time));
       }
   
   ```
   * The original process rate 
              - The message process test spends 708 millis thread 
   * The process rate of change thread, there. is not needed to use a single thread, so the rate changes by the thread size
             - The message process by external executor test spends 782 millis (thread size = 1)
             - The message process by external executor test spends 727 millis (thread size = 5)
            - The message process by external executor test spends 344 millis (thread size = 10)
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org