Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File;
- import java.io.IOException;
- import java.nio.file.Files;
- import java.nio.file.StandardOpenOption;
- import java.time.Duration;
- import java.time.Instant;
- import java.util.UUID;
- import java.util.stream.Collectors;
- import java.util.stream.IntStream;
- import static fi.CheckedConsumer.tryConsume;
- import static common.IO.*;
- final String outputPath = "/Users/amit.sen/Desktop/uuids-medium.csv";
- void main() throws Throwable {
- delete(outputPath);
- var start = Instant.now();
- generateUuidCsv(10000000, 5, outputPath);
- println(STR."Time Taken \{Duration.between(start, Instant.now()).getSeconds()} seconds.");
- var fileSizeInMB = new File(outputPath).length() / (1000.0D * 1000.0D);
- var fileSizeInGB = fileSizeInMB / 1000.0D;
- println(STR."Generated File Size \{fileSizeInGB < 0.0D ? STR."\{fileSizeInMB} MB" : STR."\{fileSizeInGB} GB"}");
- }
- boolean delete(String path) {
- return new File(path).delete();
- }
- File generateUuidCsv(int rows, int itemPerRow, String path) throws IOException {
- final var outputPath = new File(path);
- final var batchSize = 10000;
- if (outputPath.createNewFile()) {
- println(STR."\{path.substring(path.lastIndexOf("/") + 1)} is created.");
- } else {
- println(STR."\{path.substring(path.lastIndexOf("/") + 1)} already exists. Skipping creation.");
- }
- final var iterations = rows / batchSize;
- IntStream.rangeClosed(1, iterations == 0 ? rows : iterations)
- .parallel()
- .mapToObj(_ -> IntStream.rangeClosed(1, rows < batchSize ? 1 : batchSize)
- .mapToObj(_ -> createRow(itemPerRow)).collect(Collectors.joining())
- ).forEach(tryConsume(content -> Files.write(outputPath.toPath(),
- content.getBytes(),
- StandardOpenOption.APPEND)
- )
- );
- return outputPath;
- }
- String createRow(int item) {
- return STR."\{IntStream.rangeClosed(1, item)
- .mapToObj(_ -> UUID.randomUUID().toString())
- .collect(Collectors.joining(","))}\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement